SQL查询问题在其中包含变量时不会产生任何结果

时间:2016-01-14 22:30:34

标签: php sql

我的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",它也无法工作。我想我错过了一些明显的东西,但我似乎无法找到它是什么。

2 个答案:

答案 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;

这会丢弃你的桌子,你不想要那个,对吧?所以是的;)