2012-10-28 39 views
0

警告:mysql_fetch_array()預計參數1是資源,在串C中給出:第19行爲什麼mysql_fetch_array()期望參數1是資源?爲什麼不是參數1資源?

<?php 
$con = mysql_connect('localhost'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 


mysql_select_db("schedule", $con); 

$sql = "SELECT * FROM classes LIMIT 0,50\n"; 

mysql_query($sql); 

IF (!$sql) { 
    ECHO 'broken'; 
}; 

while($row = mysql_fetch_array($sql, MYSQL_BOTH)) 
    { 
    echo $row['language'] . " " . $row['level']; 
    echo "<br />"; 
    } 

mysql_close($con); 
?> 

爲什麼\ XAMPP \ htdocs中\測試\的index.php?該查詢在phpmyadmin中可用

+0

它仍然是一個字符串。您此時沒有發出數據庫查詢('mysql_query')。 – mario

+0

我做了,我不小心從另一個目錄中的舊版本的文件複製。修正了OP。 –

+1

變化不大。 '$ sql'仍然是一個字符串,你沒有重新分配結果句柄。 - 雖然你對mysql的使用感到困惑,但[查看PDO](http://www.php.net/manual/en/mysqlinfo.api.choosing。PHP)而是。不太麻煩,特別是準備好的陳述(通常作爲副產品更安全)。 – mario

回答

4

您對mysql_fetch_array()函數的參數是您的SQL語句字符串。這是你的警告說的。您應該首先使用 $ res = mysql_query($ sql); 並將$ res作爲參數傳遞給mysql_fetch_array()

0

更改:mysql_query($ sql); 要:$sql = mysql_query($sql);

0

從PHP.net引約mysql_query()

對於SELECT,SHOW,描述,解釋等語句返回的結果集 ,請求mysql_query()成功返回的資源,或 FALSE錯誤。

對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等, mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。

在你的情況下,資源被返回,但你忘了把它分配給什麼。

變化mysql_query($sql)$resource = mysql_query($sql)

完整的文檔在這裏:http://php.net/manual/en/function.mysql-query.php

1

輸入到mysql_fetch_Array是一種資源,這也是從的mysql_query返回值。如果將值$ sql傳遞給mysql_query(),它將不會修改該參數,因爲它是按值傳遞的。您必須將返回值分配給另一個變量,這將成爲所需的資源。

$result = mysql_query($sql); 

,然後結果傳遞參數mysql_fetch_array:

$row = mysql_fetch_array($result, MYSQL_BOTH) 

另一個重要提示:正如你可能在所有相關的線程看到,閱讀php.net這些函數的紅盒子。

使用這個擴展的氣餒。應該使用MySQLi或PDO_MySQL 擴展。另請參閱MySQL:選擇API指南和 相關的FAQ以獲取更多信息。替代此功能 包括:

mysqli_query()PDO ::查詢()

+0

^這是嵌入正確警告的好回答。正如...不再使用mysql_ *。 – CodeAngry

+0

@Claudrian,謝謝.. !! – janenz00

相關問題