0

InnoDBで実行されているデータベースを使用して、php ファイルでmysqliを使用していくつかの準備済みステートメントに取り組んでいます。ほとんどのステートメントはうまく機能していますが、select ステートメントで構文エラーを返し続ける複数の条件を持つ select ステートメントがあります。具体的には、1 行目の近くと次のエラーです。? AND section_num = ? AND dept = ? AND semester = ? AND year = ?

Call to a member function bind_param() on a non-object.

コードのスニペットは次のとおりです。

if (!$rs = $mysqli->query("SELECT id FROM courses WHERE course_num = ? AND section_num = ? AND dept = ? AND semester = ? AND year = ?")) {
        echo "Select Query Failed!: (" . $mysqli->errno . ") ". $mysqli->error;
    }
    if(!$rs->bind_param("ssssi", mysqli_real_escape_string($mysqli,$course_num), mysqli_real_escape_string($mysqli,$section_num),
        mysqli_real_escape_string($mysqli,$dept), mysqli_real_escape_string($mysqli,$semester), mysqli_real_escape_string($mysqli,$year))) {
        echo "Select Binding parameters failed: (" . $rs->errno .") " . $rs->error;
    }
    if (!$rs->execute()) {
        echo "Execute select failed: (" . $rs->errno . ") " . $rs->error;
    }

4 つの入力に基づいて ID を取得するためにこのステートメントを作成する方法についての提案は素晴らしいでしょう。ありがとう!

4

4 に答える 4

1

クエリを実行するだけprepareでなく、ステートメントを準備するために使用する必要があります。query

于 2013-03-17T05:24:02.163 に答える
0
$query = "
SELECT id 
FROM courses 
WHERE 
course_num = ? AND section_num = ? AND dept = ? AND semester = ? AND year = ?
";
$rs = $mysqli->prepare($query);
$rs->bind_param("ssssi", $course_num, $section_num, $dept, $semester, $year);
$rs->execute();
于 2013-03-17T05:33:28.370 に答える
0

変更:$mysqli->query("SELECT id ... に:$mysqli->prepare("SELECT id ...

于 2013-03-17T05:48:04.957 に答える