2015-11-13 56 views
0

我是SQL和PHP的新手。我的目标很简单:检查数据库中是否存在电子邮件地址。我正在使用以下代码:Mysqli bind_result错误

 $email = [email protected];  
     $conn = new mysqli("localhost", "root", "", "mysite"); // Create connection 
     if ($conn->connect_error) { // Check connection 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $stmt = $conn->prepare("SELECT * FROM contacts WHERE email = ?"); 
     $stmt->bind_param("s", $email); 
     $stmt->execute(); 
     $stmt->bind_result($email); 
     $stmt->store_result(); 
     $result = $stmt->num_rows; 

     echo $result; 

每当我收到一个错误。它说我在bind_result中使用了错误的参数数量。它是如何的?

+0

哦..我忘了。这是一条错误消息:bind_result():绑定变量的数量与预准备语句中的字段数不匹配 – Fusion

回答

1

如果你是新手,我会建议使用PDO而不是mysqli。

至于你的错误:你select *列但只绑定一个。 您可以将查询更改为select email,或者取消绑定结果集: 如果您只想检查是否存在电子邮件,则只需要输入行数。

+0

你是一个杀手!谢谢。这是PDO更容易处理或什么?在任何情况下,我都会关注一下。 – Fusion

+0

不客气!是的,我发现它更简单 - 它更标准,并且它与数据库无关,因此您可以通过更改[DSN](http://php.net/manual/en/pdo.construct)从Mysql更改为PostgreSQL或SQLite .php)(尽管不是所有查询都可以兼容),而无需更改任何代码。虽然它与mysqli非常相似,但使用起来可能更简单。 – Kenney