0

この単純なSQL行に苦労しています...

実行すると、エラーが発生し続けます: Error: Unknown column 'comics' in 'where clause'.

これは通常、簡単に修正できます...「comics」が列「table_name」のエントリとして存在することを確認してください。しかし、私はすでにそれを確認しました...

ここに画像の説明を入力

SQL に問題はありません。

$sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = $table AND imgid = $imgid";

編集:

ところで、私はすでに引用符でそれを試しました:

    $sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = '$table' AND imgid = $imgid";

しかし、それはエラーをスローします:

Fatal error: Call to undefined method mysqli_result::num_rows() in C:\wamp\www\HTwS\scripts\likecounter.php on line 40

誰でも助けることができますか?

ありがとう!

4

1 に答える 1

3

の値table_nameは文字列であるため、クエリでは単一引用符で囲む必要があります。それを文字列値として引用しないと、MySQL は提供された引用符なし$tableが列識別子であると想定します。

$sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = '$table' AND imgid = $imgid";
//------------------------------------------------------------------------------------^^^^^^^^^

も数値以外の値である場合$imgidは、それも引用する必要があります。

ユーザー入力の結果である場合、SQL インジェクションに対して既に適切にフィルター処理されていると想定します。更新には MySQLi 固有のコードが含まれているため、これmysqli::query().

// Recommended to do this with  a prepared statement.
$stmt = $mysqli->prepare("SELECT ip FROM votes WHERE ip = ? AND table_name = ? AND imgid = ?");
if ($stmt) {
  $stmt->bind_param('ssi', $_SERVER['REMOTE_ADDR'], $table, $imgid);
  $stmt->execute();
  // Bind results, fetch, etc...
}

質問の更新とコメントの後に編集します。

未定義のメソッド mysqli_result::num_rows() の呼び出し

このエラー メッセージは、プロパティではなくメソッド呼び出しnum_rowsとしてMySQLi 結果プロパティにアクセスしようとしたことを意味します。以下を使用する必要があります。()

$result->num_rows

... それ以外の

$result->num_rows()
于 2013-02-17T18:16:57.367 に答える