SQL 查询在包含变量时未给出任何结果的问题


Issue with SQL query giving no results when including a variable in it

我的PHP文件中有以下代码:

mysqli_set_charset($dbconexion,'utf8');
$usuario=$_POST ['usuario'];
$query = "SELECT * FROM usuariosinfo WHERE usuario=$usuario";

这给了我 0 个结果,即使我发布一个有效的"usuario"字符串。当我用usuario='valid-username'替换查询中的usuario=$usuario时,它确实显示了所需的结果,但即使我在变量声明中替换$usuario = "valid-username",它也不起作用。我想我错过了一些明显的东西,但我似乎找不到它是什么。

您缺少字符串分隔符。

$query = "SELECT * FROM usuariosinfo WHERE usuario = '$usuario'";

顺便说一下,在将用户输入传递给 sql 查询之前,您应该对其进行转义。至少:

$query = "SELECT * FROM usuariosinfo WHERE usuario = '" . mysqli_real_escape_string($db, $usuario) . "'";
您必须在

字符串中用撇号包装变量。

$usuario=$_POST ['usuario'];
$query = "SELECT * FROM usuariosinfo WHERE usuario='$usuario'";

请记住,如果此时如果用户在输入中添加',查询将引发错误,因为符号未转义。

因此,您可以改为执行此操作:

$usuario = mysqli_real_escape_string($dbconexion,$_POST ['usuario']);
$query = "SELECT * FROM usuariosinfo WHERE usuario='$usuario'";

这将防止在用户输入的情况下出现问题,例如, Jack Junior; drop table usuariosinfo;

这会掉落你的桌子,你不想这样,对吧?所以是的;)