PHP を学習してから 3 日目ですが、問題が発生しました。UPDATE および INSERT PDO クエリは正常に実行されていますが、SELECT クエリを動的に動作させるには複雑な問題があります。
これは私の検索フォームです:
<h1>Search</h1>
<form action="otsingu_tulemused.php" method="post">
Aadress:<br />
<input type="text" name="aadress" value="" />
<br /><br />
Hind:<br />
<input type="text" name="hind" value="" /><br />
<br /><br />
<input type="submit" value="Otsi" />
</form>
これが私の検索結果ページです。
<?php
// First we execute our common code to connection to the database and start the session
require("common.php");
// This if statement checks to determine whether the edit form has been submitted
// If it has, then the account updating code is run, otherwise the form is displayed
// Vaatame, kas aadressi väli on täidetud
if(!empty($_POST['aadress']))
{
$aadress = $_POST['aadress'];
}
else {
$aadress = null;
}
// Vaatame, kas hinna väli on täidetud
if(!empty($_POST['hind']))
{
$hind = $_POST['hind'];
}
else {
$hind = null;
}
// Kui aadressi väli on täidetud, siis anname parameetrile väärtuse
if($aadress !== null)
{
$query_params[':addr'] = $aadress;
}
// Kui hinna väli on täidetud, siis anname parameetrile väärtuse
if($hind !== null)
{
$query_params[':price'] = $hind;
}
// Note how this is only first half of the necessary update query. We will dynamically
// construct the rest of it depending on whether or not the user is changing
// their password.
$query = "
SELECT
*
FROM kuulutused
WHERE
";
// If the user is changing their password, then we extend the SQL query
// to include the password and salt columns and parameter tokens too.
if($address !== null)
{
$query .= "
addr LIKE :addr
";
}
if($price !== null)
{
$query .= "
AND
price = :price
";
}
try
{
// Execute the query
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $ex)
{
// Note: On a production website, you should not output $ex->getMessage().
// It may provide an attacker with helpful information about your code.
die("Failed to run query: " . $ex->getMessage());
}
?>
<table class="table">
<?php foreach( $result as $row ){
echo "<tr><td>";
echo $row['addr'];
echo "</td><td>";
echo $row['price'];
echo "</td>";
echo "</tr>";
}
?>
</table>
このクエリでエラーが発生します。
クエリの実行に失敗しました: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。4 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。