MySQL 使用变量准备语句
MySQL prepare statement using variable
我在下面使用 PHP + MySQL prepare 语句到 select 数据库中的值,使用函数将变量传递到语句中,但是我无法得到我想要的结果。问题是我不知道如何在准备语句中使用变量。
问题:
你能看看我使用的语法是否正确吗?
public function getToken($committeeValue){
$stmt = $this->conn->prepare("SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.'$committeeValue' = 1");
$stmt->execute();
}
Please try the below one.
public function getToken($committeeValue){
$stmt = $this->conn->prepare("SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.".$committeeValue." = 1");
$stmt->execute();
}
我认为您在 string.Please 中 附加 php 变量 是错误的,试试这个。
您在 PHP 中连接字符串时犯了错误。
所以请尝试以下操作:
public function getToken($committeeValue){
$committeeValue = trim($committeeValue);
if(!empty($committeeValue)){
$query = "SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.".$committeeValue." = 1";
$stmt = $this->conn->prepare($query);
$stmt->execute();
}
}
直接使用 var 内容是不安全的,因为它允许注入 SQL 语句。
在您的情况下,安全的方法是:
public function getToken($committeeValue){
$committeeValue = trim($committeeValue);
if(!empty($committeeValue)){
$query = "SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.? = 1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(1, $committeeValue);
$stmt->execute();
}
}
查询将在没有 var 内容的情况下编译,因此您不必担心 SQL 注入。
我在下面使用 PHP + MySQL prepare 语句到 select 数据库中的值,使用函数将变量传递到语句中,但是我无法得到我想要的结果。问题是我不知道如何在准备语句中使用变量。
问题: 你能看看我使用的语法是否正确吗?
public function getToken($committeeValue){
$stmt = $this->conn->prepare("SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.'$committeeValue' = 1");
$stmt->execute();
}
Please try the below one.
public function getToken($committeeValue){
$stmt = $this->conn->prepare("SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.".$committeeValue." = 1");
$stmt->execute();
}
我认为您在 string.Please 中 附加 php 变量 是错误的,试试这个。
您在 PHP 中连接字符串时犯了错误。
所以请尝试以下操作:
public function getToken($committeeValue){
$committeeValue = trim($committeeValue);
if(!empty($committeeValue)){
$query = "SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.".$committeeValue." = 1";
$stmt = $this->conn->prepare($query);
$stmt->execute();
}
}
直接使用 var 内容是不安全的,因为它允许注入 SQL 语句。 在您的情况下,安全的方法是:
public function getToken($committeeValue){
$committeeValue = trim($committeeValue);
if(!empty($committeeValue)){
$query = "SELECT u.token FROM users u INNER JOIN committee c ON u.email = c.email WHERE c.? = 1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(1, $committeeValue);
$stmt->execute();
}
}
查询将在没有 var 内容的情况下编译,因此您不必担心 SQL 注入。