预处理语句 mysqli SELECT * FROM users
Prepared statement mysqli SELECT * FROM users
有人可以告诉我我做错了什么吗?我正在尝试 select 来自用户的所有内容,然后我想使用数据库中的 ['password'] 和 den ['verified'] 字符串,其中显示“//使用您的绑定变量这里'。我是尝试学习准备好的陈述的新手。谢谢
$read = $db->prepare('SELECT * FROM users WHERE email=? LIMIT 1');
$read->bind_param('s', $email);
$read->execute();
$read->store_result();
if($read->num_rows > 0){
$read->bind_result($*);
$read->fetch();
// use your bound variables here
$userpassword=$read['password'];
$userverified=$read['verified'];
$read->close();
} else {
// no results found
}
如果您才刚刚开始学习 PHP 那么您应该学习 PDO 而不是 mysqli。 PDO 更容易,更适合初学者。从这里开始 https://phpdelusions.net/pdo & https://websitebeaver.com/php-pdo-prepared-statements-to-prevent-sql-injection 不要在 mysqli 上浪费你的时间。
使用 PDO:
$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'inet', '5432', [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_EMULATE_PREPARES => false
]);
$read = $pdo->prepare('SELECT * FROM users WHERE email=? LIMIT 1');
$read->execute([$email]);
$user = $read->fetch();
if ($user) {
$userpassword = $user['password'];
$userverified = $user['verified'];
} else {
// no results found
}
使用 mysqli:
如果您必须使用 mysqli,那么您可以使用 get_result()
来获取 mysqli_result
对象,然后您可以从中获取一个数组或一个表示您的数据的对象。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost', 'user', 'password', 'test');
$db->set_charset('utf8mb4'); // always set the charset
$read = $db->prepare('SELECT * FROM users WHERE email=? LIMIT 1');
$read->bind_param('s', $email);
$read->execute();
$result = $read->get_result();
$user = $result->fetch_assoc();
if ($user) {
$userpassword = $user['password'];
$userverified = $user['verified'];
} else {
// no results found
}
有人可以告诉我我做错了什么吗?我正在尝试 select 来自用户的所有内容,然后我想使用数据库中的 ['password'] 和 den ['verified'] 字符串,其中显示“//使用您的绑定变量这里'。我是尝试学习准备好的陈述的新手。谢谢
$read = $db->prepare('SELECT * FROM users WHERE email=? LIMIT 1');
$read->bind_param('s', $email);
$read->execute();
$read->store_result();
if($read->num_rows > 0){
$read->bind_result($*);
$read->fetch();
// use your bound variables here
$userpassword=$read['password'];
$userverified=$read['verified'];
$read->close();
} else {
// no results found
}
如果您才刚刚开始学习 PHP 那么您应该学习 PDO 而不是 mysqli。 PDO 更容易,更适合初学者。从这里开始 https://phpdelusions.net/pdo & https://websitebeaver.com/php-pdo-prepared-statements-to-prevent-sql-injection 不要在 mysqli 上浪费你的时间。
使用 PDO:
$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'inet', '5432', [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_EMULATE_PREPARES => false
]);
$read = $pdo->prepare('SELECT * FROM users WHERE email=? LIMIT 1');
$read->execute([$email]);
$user = $read->fetch();
if ($user) {
$userpassword = $user['password'];
$userverified = $user['verified'];
} else {
// no results found
}
使用 mysqli:
如果您必须使用 mysqli,那么您可以使用 get_result()
来获取 mysqli_result
对象,然后您可以从中获取一个数组或一个表示您的数据的对象。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost', 'user', 'password', 'test');
$db->set_charset('utf8mb4'); // always set the charset
$read = $db->prepare('SELECT * FROM users WHERE email=? LIMIT 1');
$read->bind_param('s', $email);
$read->execute();
$result = $read->get_result();
$user = $result->fetch_assoc();
if ($user) {
$userpassword = $user['password'];
$userverified = $user['verified'];
} else {
// no results found
}