我的PHP文件中有以下代码:
mysqli_set_charset($dbconexion,'utf8');
$usuario=$_POST ['usuario'];
$query = "SELECT * FROM usuariosinfo WHERE usuario=$usuario";
这给了我0结果,即使我发布了一个有效的“usuario”字符串。当我用usuario=$usuario
替换查询中的usuario='valid-username'
时,它确实显示了所需的结果,但即使我在变量声明中替换$usuario = "valid-username"
,它也无法工作。我想我错过了一些明显的东西,但我似乎无法找到它是什么。
答案 0 :(得分:2)
您缺少字符串分隔符。
$query = "SELECT * FROM usuariosinfo WHERE usuario = '$usuario'";
顺便说一下,在将它们传递给sql查询之前,你应该转义用户输入。至少:
$query = "SELECT * FROM usuariosinfo WHERE usuario = '" . mysqli_real_escape_string($db, $usuario) . "'";
答案 1 :(得分:0)
你必须在字符串中包含带撇号的变量。
$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;
这会丢弃你的桌子,你不想要那个,对吧?所以是的;)