0

这是我的users桌子:

uid (main) | username  | password
    1      | Admin     | "(actual password removed)"
    2      | Dummy     | "(another password removed)"

我的 MySQL 查询如下:

SELECT * FROM `users` WHERE username = "Admin"

我的 php 代码如下所示:

$con=@mysqli_connect("localhost","root","root","database");
$sql='SELECT * FROM `users` WHERE username = "Admin"';
mysqli_prepare($con, $sql);
mysqli_query($con, $sql);
mysqli_close($con);

如果我在 phpMyAdmin 中运行此代码,则它会成功返回第一行,但是如果我从我的 php 页面运行它,则会收到以下错误:

Fatal error: Problem preparing query (SELECT * FROM `users` WHERE username = "Admin") You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Admin"'

我不明白有什么区别...

4

3 回答 3

0

我不确定但请尝试使用单引号

SELECT * FROM `users` WHERE username = 'Admin'
于 2013-06-22T11:02:09.583 回答
0

您应该对变量而不是整个字符串使用准备。MySQL 正在将它们转义为更安全的替代方案' ,当通过浏览器查看时,这些替代方案看起来像'.

查找MySQL Prepare并查看示例部分以了解它应该如何使用

为了使您的代码正常工作,您可以删除准备,或使准备仅适用于变量部分(在这种情况下没有附加变量?)

于 2013-06-22T11:23:07.647 回答
-1

对用户名字符串使用单引号。改变这个: -

$sql="SELECT * FROM `users` WHERE username = "Admin"";

$sql="SELECT * FROM `users` WHERE username = 'Admin' ";
于 2013-06-22T11:01:20.727 回答