Php 从表中选择,其中=$variable

Php 从表中选择,其中=$variable,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试学习PHP/MySql并创建一个简单的“网站” 我在尝试打印Select中的行时遇到问题。我创建了一个带有表“Utenti”的数据库,我想从中选择一个用户名 $username='Prova'; // In my database there is a record with username "Prova" require 'connessione_db.php'; // I connect Php to the Database in another file mysqli_s

我正在尝试学习PHP/MySql并创建一个简单的“网站”

我在尝试打印Select中的行时遇到问题。我创建了一个带有表“Utenti”的数据库,我想从中选择一个用户名

$username='Prova';
// In my database there is a record with username "Prova"

require 'connessione_db.php';
// I connect Php to the Database in another file

mysqli_select_db ($conn, $dbname);

$checkusername= "SELECT username FROM utenti WHERE username= '$username' ";
// when i write "Where username='Prova' " there aren't problem.

$username_result=mysqli_query($conn,$checkusername);

if (mysqli_num_rows($username_result) > 0) {
        while($rows=mysqli_fetch_array($username_result)) {
                echo $rows['username'];
        }
} else {
    echo "no";
}
对于实际代码,结果是“否”,但如果我写:

... where username='Prova'";
结果是“Prova”

我试图更改代码读取用户的解决方案,但没有成功。我试过:

" ... Where username='" .$username. "'";


和其他无用的建议。

当你在向sql server发送地址时,你使用的是字符串,所以你需要合并两个字符串,这样
用户名=“$username”。“
应该可以正常工作。可能的工作方式类似于
”…用户名=“{$username}”
。你应该使用
错误.log($checkusername)来调试这个字符串
字符串有什么问题。您当前使用的php版本是什么?最稳定的版本是
5.6
7.3.4
,尽管7+版本并不流行。

.username=”$username。“'”
username='$username'
相同。在这里使用
mysqli\u real\u escape\u string()
没有什么区别,因为没有什么可以转义的(尽管您实际上应该使用准备好的语句)。问题中没有任何内容表明,当运行硬编码值和使用完全相同变量的变量时,会得到不同的结果。问题中是否有其他内容没有显示?我添加了整个代码,我只遗漏了以前使用的类似代码,但变量是整数类型,代码确实如此没问题。谢谢您的回答@Yann您应该在sql查询之前使用
error.log
,然后在服务器上某个位置的error.log文件中查看它。我试图在代码中添加error\u log:'“error\u log($controllusername)=”选择。。。“'当我试图打开页面时,得到这个错误:致命错误:不能使用函数返回值。@Yann您使用
error\u log
作为函数,所以您传递参数(在您的例子中是字符串),所以看起来像这样:
error\u log($myString)
。另外,我建议您阅读有关该函数的文章。昨天我使用了该函数,出现了致命错误“无法使用函数返回值”。也许我不理解您的意思……无论如何,感谢您的耐心等待
mysqli_real_escape_string($conn,$username);