【发布时间】:2014-02-09 07:00:02
【问题描述】:
几天前,我从一个教程中获得了我的第一个工作 AJAX 脚本。唯一的问题是它是用“老式”数据库查询编写的。我必须升级代码以使其与 PDO 兼容 - 但我没有完成这项工作。
它在一定程度上起作用;我可以显示基于性别的人员列表。但是,当我尝试按年龄或 wpm 优化列表时,它不起作用。
这是原始查询:
$query = "SELECT * FROM ajax_example WHERE sex = '$sex'";
所以显而易见的问题是我的代码中留下的三个 $query 变量:
$query .= " AND age <= $age";
$query .= " AND wpm <= $wpm";
echo "Query: " . $query . "<br />";
我用 $stmt 替换了 $query 的每个实例,但它不起作用。所以我用 $row、$sql 甚至 $Total 替换了它们,但没有任何效果。在大多数情况下,它仍然有效——我可以根据性别在表格中显示每个名字。但是当我输入年龄或 wpm 的值时,它不起作用(并且某些变量会产生错误消息)。
谁能告诉我用什么替换 $query ?
$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;
【问题讨论】: