0

我正在使用mysqli在 php 文件中使用在InnoDB上运行的数据库来处理一些准备好的语句。大多数语句都运行良好,但是我有一个带有多个条件的 select 语句,它在我的 select 语句中不断返回语法错误,具体来说:? AND section_num = ? AND dept = ? AND semester = ? AND year = ?在第 1 行附近以及以下错误:

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 回答
-2

这样做很简单

$query = "SELECT * FROM `$table_tran` WHERE `$mem_id` ='$member_id' and                         $status` = '$cur_status'";
$result = mysqli_query($link,$query);

It gets the data from the transaction table using the and statement.

于 2017-02-27T02:33:03.577 回答