저는 며칠 전 튜토리얼에서 처음으로 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 />";
나는 $ stmt에와 $ 쿼리의 각 인스턴스를 교체, 그러나 그것은 작동하지 않았다. 그래서 나는 그것들을 $ 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;
와우, 나는 아직도 배울 것이 많다. 나는 bindParam 물건이 질의로 끝났다고 생각했다. –
그 의미가 확실하지 않습니다. 그것은 쿼리를 실행하기 전에 완료되어야합니다. bindParam 항목은 변수를 쿼리 문자열로 직접 대체하는 대신 사용됩니다. – Barmar