PHP mysqli_error将boolean作为参数1传递

时间:2014-05-12 10:27:13

标签: php mysqli

我是一名PHP初学者,所以请保持温和: - )

我正在试验mysqli_error。以下代码段会检查连接$cxn

  7 ini_set('display_errors',1);
  8 error_reporting(E_ALL);
  9
 10
 11 echo "<html>
 12       <head><title>Test MySQL</title></head>
 13       <body>";
 14 $host = "localhost";
 15 $user = "test";
 16 $password = "test";
 17 $database = "PetCatalogFail";
 18
 19 $cxn = mysqli_connect($host,$user,$password,$database);
 20
 21 if(!$cxn)
 22 {
 23         var_dump($cxn);
 24
 25         $message = mysqli_error($cxn);
 26         echo "$message";
 27         echo "</body>";
 28         echo "</html>";
 29         die();
 30 }
故意选择

$database以使$cxn为假。但是我收到以下消息:

  

警告:mysqli_error()要求参数1为mysqli,第25行/var/www/test.com/public_html/temp.php中给出布尔值

var_dump($cxn)将输出设为bool(false)。我希望在$message中存储生成的错误消息并回显它。我错误地使用mysqli_error吗?

2 个答案:

答案 0 :(得分:6)

mysqli_error();从MySQL操作中返回错误。

使用mysqli_connect_error();进行连接。

示例:http://php.net/manual/en/mysqli.connect-error.php

答案 1 :(得分:2)

根据文档mysqli_error()期望将mysqli实例作为第一个参数传递。对我来说,看起来你的mysqli_connect返回(bool)false 并将它传递给mysqli_error()函数。

为了避免这样的错误,您可以使用mysqli库的“面向对象”样式:

<?php
$connection = new mysqli($host, $user, $password, $database);

// to read a connection error access the member properties
$connection->connect_errno;    

// to read the error
print $connection->error;