我不知道我在這裏做錯了什麼?有人可以幫幫我嗎?當執行以下查詢我收到以下錯誤:PHP PDO:無效的參數編號:綁定變量的數量與令牌的數量不匹配
警告:PDOStatement對象::執行()[pdostatement.execute]:SQLSTATE [HY093]:無效參數號:綁定變量的數目不匹配的令牌
的數// Required files
include("../../includes/common.inc.php");
require_once("../../includes/config.php");
session_start();
$man_email = $_SESSION['dStation']->getValue('email');
//echo $man_email;
/* Connection vars here for example only. Consider a more secure method. */
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'dstation_db';
try {
// Connect and create the PDO object
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
}
catch(PDOException $e) {
echo $e->getMessage();
}
$return_arr = array();
if ($conn)
{
$ac_term = "%wa%";
//$ac_term = "%".$_GET['term']."%";
$query = "SELECT * FROM ds_employee AS e
LEFT OUTER JOIN ds_employee_address AS a ON e.id_employee = a.fk_employee
LEFT OUTER JOIN ds_employee_detail AS d ON e.id_employee = d.fk_employee
LEFT OUTER JOIN ds_department AS g ON d.fk_department = g.id_department
LEFT OUTER JOIN ds_job_title AS j ON d.job_title = j.id_job_title
LEFT OUTER JOIN ds_manager AS m ON d.fk_manager = m.id_manager
WHERE emp_lastname LIKE :term AND man_email = :man_email";
echo $query;
$result = $conn->prepare($query);
$result->bindValue(":term", $ac_term, PDO::PARAM_STR);
$result->bindValue(":man_email", $man_email, PDO::PARAM_STR);
$result->execute();
/* Retrieve and store in array the results of the query.*/
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
$row_array['id_employee'] = $row['id_employee'];
$row_array['value'] = $row['emp_lastname'] . ', ' . $row['emp_firstname'] . ' - ' . $row['description'];
$row_array['lastname'] = $row['emp_lastname'];
$row_array['abbrev'] = $row['emp_firstname'];
$row_array['job_title'] = $row['description'];
$row_array['fk_department'] = $row['dept_name'];
$row_array['fk_manager'] = $row['fk_manager'];
array_push($return_arr,$row_array);
}
}
/* Free connection resources. */
$conn = null;
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
我根據收到的答案糾正了錯誤。這糾正了錯誤消息,但查詢仍然不起作用。當我贊同查詢,這是獲取返回的內容:
SELECT * FROM ds_employee爲e LEFT OUTER JOIN ds_employee_address AS一個ON e.id_employee = a.fk_employee LEFT OUTER JOIN ds_employee_detail爲d ON e.id_employee = LEFT d.fk_employee OUTER JOIN ds_department AS g ON d.fk_department = g.id_department LEFT OUTER JOIN ds_job_title AS j ON d.job_title = j.id_job_title LEFT OUTER JOIN ds_manager AS m ON d.fk_manager = m.id_manager WHERE emp_lastname LIKE:term AND man_email =: man_email []
我不明白括號是從哪裏來的:man_email?
查詢中的'man_email'之前缺少':' – 2013-02-17 04:06:39
@REF您正在執行的行是'echo $ query;'將其更改爲'echo $ query'。 '###';'如果括號出現在'###'之前,那麼它們是查詢字符串的一部分,如果它們在它後面,那麼它們將在稍後輸出到腳本中。將結果報告回來,以便我們確定它是哪個,然後從那裏繼續。 – 2013-02-17 09:34:46
現在我很困惑。方括號出現在#### – REF 2013-02-17 13:21:32