catcble致命错误:类mysqli的对象无法转换为字符串...

时间:2013-09-02 17:11:50

标签: php mysqli

我已经设置了一个函数,它使用insert语句将用户注册到站点中 - 之前另一个语句检查数据库中是否已存在该电子邮件。

问题在于insert语句试图将用户数据放入DB ...浏览器输出捕获致命错误:类mysqli的对象无法转换为字符串...

我真的不明白是什么问题.Result1是出现错误的查询。 从语法的角度来看,我没有错。 我尝试了很多,但我找不到问题。通常这些错误出现在SELECT语句中。 这是代码:

function register_enduser($post,$connection)

{ global $errorclass;

 $name = $connection->real_escape_string($post['name']);
 $lastname = $connection->real_escape_string($post['lastname']);
 $email = $connection->real_escape_string($post['e-mail']);
 $pass_hashed = password::hash($_POST['password']); 
 $passwd =  $pass_hashed;
 $usertype= $_POST['usertype'];

 $connection->set_charset("utf8");

 $result = $connection->query("select * from users where email='".$email."'");
 if (!$result) {
     throw new Exception('error');
     return false;
 }
 elseif ($result->num_rows > 0) {
     $errorclass['existentemail'] = ' e-mail allready exists.';
     return $errorclass['existentemail'];
 } else {
     $result1 = $connection->query("insert into users values

 (NULL,'".$name."','".$lastname."','"
 .$email."','".$passwd."','".$pass_hashed."','".$usertype."')")or die($connection);
 }
 if (!$result1) {
     throw new Exception('error.');
     return false;
 } 

 return true;
 }

2 个答案:

答案 0 :(得分:1)

检查or die($connection);。然后查看exit的文档(dieexit的别名)。它接收一个字符串(或int)参数,然后向它发送一个对象。

因此,它失败了。

答案 1 :(得分:0)

您的查询:

$result1 = $connection->query("insert into users values
    (NULL,'".$name."','".$lastname."','"
    .$email."','".$passwd."','".$pass_hashed."','".$usertype."')")

显然失败并且die($connection)部分语句被执行导致所述可捕获错误,以下是如何解决它:

$sql = "INSERT INTO users VALUE
    (NULL, '".$name."', '".$lastname."', '".$email."', '".$passwd."', '".$pass_hashed."', '".$usertype."')";
$result1 = $connection->query($sql) or die($connection->error); // notice "->error"

收到SQL错误消息后,您将能够继续对您的查询进行调试。

此外,如果您在or die(...)的同一语句中使用$connection->query(...),则此代码毫无意义:

if (!$result1) {
    throw new Exception('error.');
    return false;
} 

这部分代码永远不会执行。