准备好的语句 Mysql 不工作
Prepared Statements Mysql not working
我正在尝试使用准备好的语句来 select 来自 table 的数据,如下所示。这种方法不起作用。
$sql = "SELECT * FROM `usrs` WHERE `username` = ? ";
$statement = $this->conn->prepare($sql);
if (!statement)
{
throw new Exception($statement->error);
}
$statement->bind_param("s",$username);
$returnValue = $statement->execute();
return $returnValue;
$sql
应采用以下格式。
$sql = "SELECT * FROM `usrs` WHERE `username` = 'username' ";
但是上面的代码没有在用户名周围放置单引号 ' '
我需要将用户名放在两个单引号 ' ' 之间,如图所示。如果我只使用
$sql = "SELECT * FROM `usrs` WHERE `username` = username "
它不起作用。
关于如何做到这一点的任何建议。
仔细阅读this:
bool mysqli_stmt::execute ( void )
这意味着它 returns boolean - 这不是可用的对象或数组。
您必须获取声明。
修复方法如下:
$sql = "SELECT * FROM `usrs` WHERE `username` = ? LIMIT 1";
$statement = $this->conn->prepare($sql);
$statement->bind_param("s",$username);
if ($statement->execute()) {
$result = $statement->get_result();
return $result->fetch_assoc();
}
return null;
P.S。谢谢@Phil 在我的回答中修正了我的错误
我正在尝试使用准备好的语句来 select 来自 table 的数据,如下所示。这种方法不起作用。
$sql = "SELECT * FROM `usrs` WHERE `username` = ? ";
$statement = $this->conn->prepare($sql);
if (!statement)
{
throw new Exception($statement->error);
}
$statement->bind_param("s",$username);
$returnValue = $statement->execute();
return $returnValue;
$sql
应采用以下格式。
$sql = "SELECT * FROM `usrs` WHERE `username` = 'username' ";
但是上面的代码没有在用户名周围放置单引号 ' '
我需要将用户名放在两个单引号 ' ' 之间,如图所示。如果我只使用
$sql = "SELECT * FROM `usrs` WHERE `username` = username "
它不起作用。
关于如何做到这一点的任何建议。
仔细阅读this:
bool mysqli_stmt::execute ( void )
这意味着它 returns boolean - 这不是可用的对象或数组。
您必须获取声明。
修复方法如下:
$sql = "SELECT * FROM `usrs` WHERE `username` = ? LIMIT 1";
$statement = $this->conn->prepare($sql);
$statement->bind_param("s",$username);
if ($statement->execute()) {
$result = $statement->get_result();
return $result->fetch_assoc();
}
return null;
P.S。谢谢@Phil 在我的回答中修正了我的错误