Php mysqli不执行Select语句
我有下面的密码。当我在不使用Php mysqli不执行Select语句,php,mysql,select,mysqli,Php,Mysql,Select,Mysqli,我有下面的密码。当我在不使用WHERE子句的情况下使用此代码时,表中的所有用户都会按预期显示。但是当使用WHERE子句时,不会显示任何内容 原因可能是什么?我如何修复 谢谢大家! function requestUser($user) { $DBHost = "localhost"; $DBUser = "dbUser"; $DBPass = "dbPass"; $DBName = "dbName"; $db = new mysqli($DBHost, $D
WHERE
子句的情况下使用此代码时,表中的所有用户都会按预期显示。但是当使用WHERE
子句时,不会显示任何内容
原因可能是什么?我如何修复
谢谢大家!
function requestUser($user) {
$DBHost = "localhost";
$DBUser = "dbUser";
$DBPass = "dbPass";
$DBName = "dbName";
$db = new mysqli($DBHost, $DBUser, $DBPass, $DBName);
if ($db -> connect_errno > 0) {
$lbOK = false;
}
else {
$lbOK = $db -> set_charset('utf8');
}
if ($lbOK) {
$id = NULL;
$user_name = NULL;
$user = htmlentities($user, ENT_QUOTES);
$lcSQL = "SELECT `user_name` FROM `users` WHERE user_name=?";
$stmt = $db -> prepare($lcSQL);
$ok = $stmt -> bind_param('s', $user);
$ok = $stmt -> execute();
$ok = $stmt -> bind_result($user_name);
while ($row = $stmt -> fetch()){
echo $user_name;
}
$stmt->close();
}
}
代码中有许多主要错误,其中一些可能是问题的原因,而另一些则不是。但无论如何,它们都必须得到纠正
$dsn = "mysql:host=DBHost;dbname=DBName;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,$DBUser, $DBPass, $opt);
function requestUser($user) {
global $db;
$sql = "SELECT `user_name` FROM `users` WHERE user_name=?";
$stmt = $db->prepare($sql);
$stmt->execute(array($user));
return $stmt->fetchColumn();
}
echo requestUser($user);
$sql = "SELECT `user_name` FROM `users` WHERE user_name='$user'";
var_dump($sql);
然后尝试在console/phpmyadmin中运行,以找出您的数据/值有什么问题可能没有人与where子句匹配!您确定有用户名为“?”的用户吗?是的,有符合条件的用户。谢谢您的提示。我发布的函数只是为了测试。在我的应用程序中,DB连接是在引导中建立的。你给我的代码使用PDO方法,我不能使用PDO,因为它在服务器上不可用。。。无法改变这一点…数据库中有用户与WHERE子句匹配。我刚刚用MySQL 5+在服务器上测试了我的代码,它正在工作。在服务器上,我必须使用MySQL 4.1.22(如PHP手册中所述,高于4.1)。这可能是原因吗?不。您需要在服务器上用实际数据测试代码。完成!我已经在两台服务器上重新创建了数据库。在一个MySQL 5+上它可以工作,在另一个上它不工作。