我的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;
这会掉落你的桌子,你不想这样,对吧?所以是的;)