2010-08-09 4 views
1

Возможный дубликат:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectПроблема с mysql_fetch_array

Эй я новичок в MySql, это код, который я написал, `

 <?php 

     echo "Here is the table"; 
     $con = mysql_connect("localhost","root","mypassword"); 

     if(!$con) 
      die('Error:'.mysql_error()); 


     // Create table 
     mysql_select_db("my_db", $con); 
     $sql = "CREATE TABLE persons 
     (
      f_name varchar(15), 
      l_ame varchar(15), 
      age int 
     )"; 


     mysql_query("INSERT INTO persons (f_name, l_name, age) 
     VALUES ('Peter', 'Griffin', '35')"); 

     mysql_query("INSERT INTO persons (f_name, l_name, age) 
     VALUES ('Glenn', 'Quagmire', '33')"); 

     $res = mysql_query("SELECT * FROM persons"); 
     while($row = mysql_fetch_array($res)) 
     { 
      echo $row['f_name'] . " " . $row['l_name']; 
      echo "<br />"; 
     } 
    ?>` 

Я получаю следующее сообщение об ошибке

Вот таблица Предупреждение: mysql_fetch_array(): поставляется аргумент не является допустимым MySQL результаты ресурс в /var/www/PhpProject1/index.php на линии 40

почему я получаю эта ошибка и как ее разрешить?

ответ

2

Это не ошибка mysql_fetch_array. это сообщение об ошибке говорит, что аргумент этой функции неверен.
и этот аргумент, возвращаемый функцией mysql_query()
, поэтому это означает, что при выполнении запроса произошла ошибка на стороне mysql.
ans mysql содержит много сообщений об ошибках, довольно информативных.

Таким образом, вместо того, чтобы гадать , вы должны войти в контакт с определенным сообщением об ошибке, которое покажет вам, что это не так.

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

$sql = "SELECT * FROM persons"; 
$res = mysql_query($sql) or trigger_error(mysql_error().$sql); 
+0

+1 Это! Просто исправление ошибок в этом запросе не поможет OP в конечном итоге. –

2

Ответы matschie верны, но это не единственная ошибка.

Ваш столбец также пишется неправильно в вашей создания таблицы заявление:

l_ame varchar(15), 

должно быть:

l_name varchar(15), 

Чтобы поймать ошибки, как это самостоятельно, вы можете проверить возвращаемое значение mysql_query, чтобы увидеть, если есть ошибка, и если это так, отобразите ошибку, используя mysql_error.

Пример того, как сделать это показано в PHP руководстве для mysql_query:

$result = mysql_query('SELECT * WHERE 1=1'); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
+0

я изменил его l_name, по-прежнему получаю ту же ошибку, хотя –

+0

@Tarun: Существует еще одна ошибки в коде. Я бы посоветовал вам потратить пять минут, чтобы узнать, как использовать mysql_error (см. Руководство по mysql_query и mysql_error). Эти пять минут, проведенных в настоящее время, сэкономят вам много часов в будущем. –

+0

^конечно, спасибо Mark –

4

Вы не создали таблицу «лица», вы просто строку с Заявлением создать в нем. Также есть опечатка около «l_ame varchar (15)», которая должна быть «l_name varchar (15)». Поэтому вы должны попробовать следующий код:

$sql = "CREATE TABLE persons 
( 
f_name varchar(15), 
l_name varchar(15), 
age int 
)";  
$res = mysql_query($sql) or trigger_error(mysql_error().$sql); ; 
+0

Добавление этой дополнительной строки все равно даст ту же ошибку. (Посмотрите внимательно на запрос - есть также опечатка.) –

+0

True. Таким образом, вы могли бы просто объединить ответы Марка Байерса, полковника Шрапнеля и меня, и сценарий должен работать, или, по крайней мере, вы можете увидеть Ошибки, которые произошли. – Matschie

Смежные вопросы