【发布时间】:2019-09-16 18:29:49
【问题描述】:
我有一个 pdo 语句的 sn-p,我想将其用作 mysqli 语句,但我似乎无法以某种方式掌握它。
我正在尝试将 mysqli->execute(array()) 从 pdo 语句“转换”为 mysqli 语句。
据我了解,有execute() 语句,它不需要mysqli 的参数,但使用PDO 它需要一个参数?
这是代码,我想将其转换为 mysqli 语句:
$sql = "SELECT * FROM users WHERE username = :username";
$sth = $GLOBALS["DB"]->prepare($sql);
$sth->execute(array(":username" => $username));
$result = $sth->fetchAll();
if (!empty($result)) {
$privUser = new PrivilegedUser();
$privUser->user_id = $result[0]["user_id"];
$privUser->username = $username;
$privUser->password = $result[0]["password"];
$privUser->email_addr = $result[0]["email_addr"];
$privUser->initRoles();
return $privUser;
} else {
return false;
}
这就是我当前的代码:
$sql = "SELECT * FROM users WHERE user_id = ?";
$stmt = $mysqli -> prepare($sql);
$stmt->bind_param('s', $user_id);
// line below is what i need to convert to a mysqli statement
$stmt->execute(array(":user_id" => $user_id));
//$stmt->store_result();
$result = $stmt->fetchAll();
if (!empty($result)) {
$privUser = new PrivilegedUser();
$privUser->user_id = $result[0]["user_id"];
$privUser->username = $user_id;
$privUser->password = $result[0]["password"];
$privUser->email_addr = $result[0]["email_addr"];
$privUser->initRoles();
return $privUser;
} else {
return false;
}
【问题讨论】:
-
使用 mysqli,调用
bind_param()是链接绑定变量的唯一方法,所以调用execute()将是$stmt->execute(); -
是的,这也是我的想法,但我怎样才能用 mysqli 实现相同的输出?以及如何使用 mysqli 执行数组?
-
你说得对,我想的有点复杂。这是这样做的唯一方法。谢谢!
标签: php arrays mysqli pdo execute