2013-03-17 71 views
0

我正在使用mysqli在一個php文件中運行的數據庫上運行InnoDB一些準備好的語句。在1號線以及以下錯誤附近? AND section_num = ? AND dept = ? AND semester = ? AND year = ?PHP和mysqli:使用預處理語句選擇多個條件

Call to a member function bind_param() on a non-object. 
大部分的語句都工作得很好,但我對此一直在我的select語句返回語法錯誤多個條件select語句,具體

這裏的代碼片段:

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任何建議將是巨大的。謝謝!

回答

1

您應該使用prepare來準備一個陳述,而不是query,因爲它只是執行一個查詢。

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(); 
0

變化:$mysqli->query("SELECT id ... 爲:$mysqli->prepare("SELECT id ...

-2

這是非常簡單的只是這樣做

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

它使用and語句的事務表獲取數據。