-4

私のミニプロジェクトの1つに、PHPとMySQLを初めて使用します(今日から開始します)。私は自分のデータベースを持っていて、テーブルからuser_idとscoreを取得するためのPHPコードを作成していますが、このエラーが発生し、それらを乗り越える方法がわかりません。最後に、要求された応答を取得していることがわかります。

警告:mysql_fetch_array()は、パラメーター1がリソースであると想定しています。文字列は/home/marathon/domains/marathon-il.com/public_html/Apps/million/view_all.phpの15行目にあります。

警告:mysql_num_rows()は、パラメーター1がリソースであると想定しています。nullは/home/marathon/domains/marathon-il.com/public_html/Apps/million/view_all.phpの18行目{"success":0、 "message" :"新しいユーザー"}

これは私のgetinfo.phpです:

<?php

$response = array();

require_once __DIR__ . '/db_connect.php';

$db = new DB_CONNECT();

$user = $_POST['userid'];

$result = mysql_fetch_array("SELECT * FROM users WHERE user_id = '$user'");

// check for empty result
if (mysql_num_rows($result) > 0){

        $userinfo = array();
        $userinfo["user_score"] = $result["score"];
        $userinfo["user_date"] = $result["date"];

        $response['info']= $userinfo;
    $response["success"] = 1;

    echo json_encode($response);;

} 
else {
    $response["success"] = 0;
    $response["message"] = "new_user";
    echo json_encode($response);
}
?>

それを修正するのを手伝ってください-ありがとう。

4

4 に答える 4

0

最初に実際にクエリを実行する必要があります。調べてみてくださいmysql_query

$result = mysql_query("SELECT * FROM users WHERE user_id = '$user'")
$ar = mysql_fetch_array($result);
于 2013-03-07T19:28:28.253 に答える
0

mysql_fetch_array関数を使用する適切な方法は以下のとおりです。最初にクエリを実行して、リソースオブジェクトを作成することに注意してください。次に、そのオブジェクトをmysql_fetch_array関数とmysql_num_rows関数に渡します。

$result = mysql_query("SELECT * FROM users WHERE user_id = '$user'") or die(mysql_error());
while($row=mysql_fetch_array($result)){
    $userinfo = array();
    $userinfo["user_score"] = $row["score"];
    ....
}

同様に、以下のようにmysql_num_rowsを使用する必要があります($ resultオブジェクトがすでに作成されていると仮定します)。

$numRows = mysql_num_rows($result);

mysql_ *関数は使用しないでくださいが、mysqli関数を学習する必要があることに注意してください。

于 2013-03-07T19:29:18.697 に答える
0

mysql_fetch_arrayは、mysql_queryからの呼び出しからの結果オブジェクトを期待します

それは次のようなものでなければなりません $result = mysql_query("SELECT......."); $var = mysql_fetch_array($result);

于 2013-03-07T19:28:05.123 に答える
0

現在のコードでは、データベースに対して実際にクエリを実行することはありません。またはmysql_query()を使用する前に使用する必要があります。これらの関数に結果セットリソースを渡していないため、エラーが発生します。mysql_num_rows()mysql_fetch_array()

これを試して:

$sql_result = mysql_query("SELECT * FROM users WHERE user_id = '$user'");

if (false === $sql_result) {
    // query failed for some reason
    throw new Exception('Query failed with error: ' . mysql_error());
}

$rows = mysql_num_rows($sql_result);
$result = array();

if ($rows > 1) {
    // too many rows were returned
    throw new Exception('Too many rows returned');
} else if (mysql_num_rows($result) === 1){
    $result = mysql_fetch_array($result);
    // continue  with rest of your code 

mysql関数の代わりにmysqliまたはPDOを使用することを絶対に検討する必要があります。論理的な手順(mysqliまたはPDOの場合も同様)と、各データベース関数から発生する可能性のあるすべての結果を実際に処理する方法を示すために、回答のみを返信しました。そこにエラー処理があることを確認してください。クエリやデータベース接続などの問題のトラブルシューティングを試みるときに、多くの時間を節約できます。

また、入力をまったくエスケープしていないため、SQLインジェクションの脆弱性を確認する必要があります。

于 2013-03-07T19:36:41.200 に答える