我一直在为这个问题绞尽脑汁,在搜索Google和Stack溢出100次之后,我决定直接询问它。
我正在尝试创建一个页面,该页面使用PHP和MySQL作为用户键入关键字时搜索数据库。我已经在这个主题上使用了几个教程,它们看起来都很简单,但并没有对我遇到的麻烦做出任何预测。
当我使用"SELECT * FROM charlist“时,它会像它应该返回的那样返回所有行。但是当我使用"SELECT * FROM字符='“时。$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);
?>
发布于 2013-08-17 01:41:09
更改这一行
$character = $_POST[character];
至
$character = $_POST['character'];
你应该通过
发布于 2013-08-17 01:39:32
尝试使用以下方法转义$character:
$sql =“从字符列表中选择*字符= '”。mysqli_real_escape_string($character)。"'";
如果字符名中有引号,则中断查询。
发布于 2013-08-17 01:40:15
将查询用作
"SELECT * FROM charlist WHERE Character ='$character'"
https://stackoverflow.com/questions/18284264
复制相似问题