1

私はこの問題で頭を悩ませてきました.GoogleとStack Overflowをそれぞれ100回検索した後、それについて率直に尋ねることにしました.

ユーザーがキーワードを入力すると、PHP と MySQL を使用してデータベースを検索するページを作成しようとしています。この件に関していくつかのチュートリアルを使用しましたが、それらはすべて前もってシンプルに見えましたが、私が抱えていた問題についての予測はありませんでした.

「SELECT * FROM charlist」を使用すると、すべての行が返されます。しかし、 "SELECT * FROM charlist WHERE Character ='" を使用すると。$キャラクター。"'"、次のエラーが表示されます。

エラー: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の '= 'X'' 付近で使用する正しい構文を確認してください。

X はユーザーが入力したものであり、何も入力されていない場合は空白です。

私は何を間違っていますか?

完全なコードは次のとおりです。

<?php
$con = mysqli_connect("xxxx", "xxxxxxxx", "xxxxxxx", "xxxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysqli_error($con));
  }
$character = $_POST[character];
mysqli_select_db($con, "xxxxxxxx");

$sql = "SELECT * FROM charlist WHERE Character = '" . $character . "'";

$result = mysqli_query($con,$sql);
if (!$result) {
    printf("Error: %s\n", mysqli_error($con));
    exit();
}

echo "<table border='1'>
<tr>
<th>Character</th>
<th>Player</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
    echo '<tr style="border-color:#';
    echo $row[Color];
    echo ';">';
    echo '<td style="border-style:solid;border-width:3px;"><a href="';
    echo $row[url];
    echo '">';
    echo $row[Character];
    echo '</a></td>';
    echo '<td>';
    echo $row[Player];
    echo'</td>';
    echo '</tr>';
}
echo '</table>';

mysqli_close($con);
?>
4

4 に答える 4

1

この行を変更

$character = $_POST[character];

$character = $_POST['character'];

そして、あなたは熟考する必要があります

于 2013-08-17T01:41:09.313 に答える
0

次を使用して $character をエスケープしてみてください。

$sql = "SELECT * FROM charlist WHERE Character = '" . mysqli_real_escape_string($character) . "'";

キャラクター名に引用符がある場合、クエリが壊れます。

于 2013-08-17T01:39:32.713 に答える
0

クエリを次のように使用します

"SELECT * FROM charlist WHERE Character ='$character'"
于 2013-08-17T01:40:15.037 に答える