我一直在为这个问题绞尽脑汁,在谷歌和 Stack Overflow 搜索了一百次之后,我决定直接问这个问题。
我正在尝试制作一个使用 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);
?>