PDA

Просмотр полной версии : MySQL и PHP


maddy
16.12.2008, 23:53
В общем перехожу я постепенно с текстовиков на базу данных и сходу появляется проблема с выводом сведений из базы =(
Вот пример моего скрипта обращения к базе:

Mysql_connect ($hostname,$username,$password) or die ( "не могу подключиться");

mysql_select_db($dbname) or die (" Не могу открыть базу !!". mysql_error());

$Query="SELECT * FROM $userTable";

$result= "mysql_query($query) or die ('query провалилось')";

$number= mysql_num_rows($result);

while ($row=mysql_fetch_array($result))
{
echo "Расположение ".$row['raion']." Район.<BR>";
echo "Адресс:: ".$row['address'];
echo "<BR><BR>";
}


Но при таком обращении все что он может мне написать это:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Q:\home\n\[Только зарегистрированные пользователи могут видеть ссылки.] on line 16

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Q:\home\n\[Только зарегистрированные пользователи могут видеть ссылки.] on line 18


Помогите разобраться, в чем тут дело, Плииииз

soft_sp
17.12.2008, 01:21
закройте сессию

maddy
17.12.2008, 08:16
закройте сессию

что вы подразумеваете под сессией? mysql_close(); ?
или я не так понял?

кстати с этими ошибками похоже разобрался,
просто я в листинге не заглючил кое-что в ковычки:


$number=" mysql_num_rows($result)";

while ($row="mysql_fetch_array($result)")


ошибки больше не выдает по крайней мере такие....

теперь появилась проблема в следующем

он мне выдает огромное количество одних и тех же надписей, и постоянно грузит их все больше и больше, а именно:

расположение m Район.
Адресс:: m

Скажите, может я опять где-нибудь накосячил и почему, оно не останавливает выполнение, а грузит вот эти данные постоянно

Izglioib
17.12.2008, 10:51
абасраться...
как можно было такое нафигачить...

Лови фиксы



$link = mysql_connect ($hostname,$username,$password) or die ( "не могу подключиться");

mysql_select_db($dbname, $link) or die (" Не могу открыть базу !!". mysql_error());

$query="SELECT * FROM ".mysql_real_escape_string($userTable,$link);

$result= mysql_query($query,$link) or die ("query провалилось");

$number= mysql_num_rows($result);

while ($row=mysql_fetch_array($result))
{
echo "Расположение ".$row['raion']." Район.<BR>";
echo "Адресс:: ".$row['address'];
echo "<BR><BR>";
}

mysql_close($link);



Названия функций и переменных пишутся с маленькой буквы.

Здесь
$query="SELECT * FROM $userTable";
Лучше использовать конкатенацию
$query="SELECT * FROM ".$userTable;
А еще лучше предварительно экранировать спецсимволы...
Вы ведь не хотите чтобы ваш сайт был подвержен mysql injection?
$query="SELECT * FROM ".mysql_real_escape_string($userTable,$link);

Это меня убило
$result= "mysql_query($query) or die ('query провалилось')";
Вы присваиваете переменной $result строку "mysql_query($query) or die ('query провалилось')"...
Естесвенно строка не является valid mysql resource )))
Правильный синтаксис
$result= mysql_query($query) or die ('query провалилось');

В конце скрипта не забываем закрывать mysql'ный линк. Экономим рессурсы.

maddy
18.12.2008, 21:48
спасибо =)