幾天前,我從教程中獲得了第一份工作的AJAX腳本。唯一的問題是它是用一個「老式的」數據庫查詢編寫的。我不得不升級代碼以使其與PDO兼容 - 但我沒有完成這項工作。AJAX/PDO衝突(PHP/MySQL)
它工作到一個點;我可以顯示基於性別的人員列表。但是,當我嘗試按年齡或wpm優化我的列表時,它不起作用。
這是原始查詢:
$query = "SELECT * FROM ajax_example WHERE sex = '$sex'";
那麼明顯的問題是,留在我的代碼三個$查詢變量:
$query .= " AND age <= $age";
$query .= " AND wpm <= $wpm";
echo "Query: " . $query . "<br />";
我換成$查詢的每個實例有$語句,但它不起作用。所以我用$ row,$ sql甚至$ Total替換它們,但沒有任何效果。在大多數情況下,它仍然有用 - 我可以在表格中根據性別顯示每個名字。但是,當我輸入年齡或wpm的值時,它不起作用(並且某些變量會產生錯誤消息)。
任何人都可以告訴我用什麼替換$查詢?
$age = $_GET['age'];
$sex = $_GET['sex'];
$wpm = $_GET['wpm'];
//build query
$sql= "SELECT * FROM ajax_example WHERE sex = :sex";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':sex',$sex,PDO::PARAM_STR);
$stmt->execute();
$Total = $stmt->fetch();
if(is_numeric($age))
$query .= " AND age <= $age";
if(is_numeric($wpm))
$query .= " AND wpm <= $wpm";
//Execute query
try {
$stmt->execute();
} catch (Exception $e) {
// print_r($e); // Do something more useful here, like log.
}
//Build Result String
$display_string = "<table>";
$display_string .= "<tr>";
$display_string .= "<th>Name</th>";
$display_string .= "<th>Age</th>";
$display_string .= "<th>Sex</th>";
$display_string .= "<th>WPM</th>";
$display_string .= "</tr>";
// Insert a new row in the table for each person returned
while ($row = $stmt->fetch())
{
$display_string .= "<tr>";
$display_string .= "<td>$row[name]</td>";
$display_string .= "<td>$row[age]</td>";
$display_string .= "<td>$row[sex]</td>";
$display_string .= "<td>$row[wpm]</td>";
$display_string .= "</tr>";
}
echo "Query: " . $query . "<br />";
$display_string .= "</table>";
echo $display_string;
哇,我還有很多東西需要學習;我認爲bindParam的東西以查詢結束! –
不確定你的意思。它在執行查詢之前必須完成。 bindParam的東西不是直接將變量替換爲查詢字符串。 – Barmar