微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

准备语句 mysqli SELECT * FROM users 使用 PDO:使用mysqli:

如何解决准备语句 mysqli SELECT * FROM users 使用 PDO:使用mysqli:

谁能告诉我我做错了什么。我试图从用户中选择所有内容,然后我想使用数据库中的 ['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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。