0

警告: mysql_fetch_array() は、パラメーター 1 がリソースであると想定します。19 行目の C:\xampp\htdocs\test\index.php で指定された文字列です。

 <?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);
 ?> 

なぜ?クエリはphpmyadminで機能します

4

4 に答える 4

4

mysql_fetch_array() 関数へのパラメーターは、SQL ステートメントstringです。これはあなたの警告が言うことです。最初に $res = mysql_query($sql); を使用する必要があります。$res をパラメーターとして mysql_fetch_array() に渡します

于 2012-10-28T22:49:54.103 に答える
1

mysql_fetch_Array への入力はリソースであり、これは mysql_query からの戻り値でもあります。値 $sql を mysql_query() に渡す場合、値によって渡されるため、パラメーターは変更されません。戻り値を別の変数に割り当てる必要があります。これが目的のリソースになります。

  $result = mysql_query($sql);

次に、結果パラメーターを mysql_fetch_array に渡します。

  $row = mysql_fetch_array($result, MYSQL_BOTH)

もう 1 つの重要な注意事項: 関連するすべてのスレッドでわかるように、これらの関数についてはphp.netの赤いボックスを参照してください。

この拡張機能の使用はお勧めできません。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQ も参照してください。この機能の代替手段は次のとおりです。

mysqli_query() PDO::クエリ()

于 2012-10-28T23:03:36.377 に答える
0

変更: mysql_query($sql); に:$sql = mysql_query($sql);

于 2012-10-28T22:51:33.017 に答える
0

PHP.net から引用mysql_query():

SELECT、SHOW、DESCRIBE、EXPLAIN、および結果セットを返すその他のステートメントの場合、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

于 2012-10-28T22:59:58.393 に答える