私はこれを別のウェブサイトで動作させましたが、これを修正すると問題が発生し、余分なパラメーターがあると思われる場所がわかりません。
後で Javascript を追加しますが、ドロップダウン メニューから選択して、データベースから対応する情報を出力できるようにする必要があります。私のPHPコードは次のとおりです。
include('definitions.php');
$con=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
echo "These are the matches for the search";
echo "<br>";
$query="SELECT name,email,town,location,gmapslink FROM users WHERE `town` = '?'";
$stmt = mysqli_prepare($con, $query);
mysqli_stmt_bind_param($stmt, "s", $_POST['select1']);
var_dump($_POST);
mysqli_stmt_execute($stmt);
/* bind variables to prepared statement */
mysqli_stmt_bind_result($stmt, $col2, $col3, $col5, $col8, $col9);
while(mysqli_stmt_fetch($stmt))
{
printf("Name:%s\t Email:%s\t Town:%s\t Location:%s\t Google Maps Link:%s\t", $col2, $col3, $col5, $col8, $col9);
echo "<br>";
}
/* close statement */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($con);
?>
Webサイトから返ってきた返信は以下の通りです。これらは検索の一致です:
PHP エラー メッセージ:
警告: mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]: 変数の数が、18 行目の /home/a5839517/public_html/search.php の準備済みステートメントのパラメーターの数と一致しません
無料の Web ホスティング:
array(3) { ["county"]=> string(15) "Outside Ireland" ["select1"]=> string(12) "Ballincollig" ["select"]=> NULL }
データベースで SQL コードを実行すると問題なく動作しますが、この場合は動作させるために と を引用符で囲む必要がtown
あり?
ました。
パラメータとしての私の問題は正しいようです。
上記のphpを呼び出す元のファイルから編集を追加しました:
<form action="search.php" method="post">
County <select name="county">
<option> Outside Ireland </option>
<option> Antrim </option>
<option> Armagh </option>
</select>
<br>
Name of Book
<?php
mysql_connect(DB_HOST,DB_USER,DB_PASS) or die("Connection Failed");
mysql_select_db(DB_NAME)or die("Connection Failed");
$query = "SELECT DISTINCT town FROM users";
$result = mysql_query($query);
?>
<select name="select1">
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['town'];?>"> <?php echo $line['town'];?> </option>
<?php
}
?>
</select>
<input type="submit">
</form>
上記のコードを修正して、select1 ステートメントと列名をバッククォートに含めます。