关于php:mysqli_error()期望参数1为mysqli,给定为null表示什么?

What does the mysqli_error() expects parameter 1 to be mysqli, null given mean?

我有这个PHP页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

//$_GET['invite'] = kNdqyJTjcf;

$code = mysqli_real_escape_string ($dbc, $_GET['invite']);

$q ="SELECT invite_id FROM signups_invited WHERE (code = '$code') LIMIT 1";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q
<br />MySQL Error:"
. mysqli_error($dbc));

if (mysqli_num_rows($r) == 1) {
    echo 'Verified';
} else {
    echo 'That is not valid. Sorry.';
}

?>

这将返回错误Warning: mysqli_error() expects parameter 1 to be mysqli, null given

知道为什么吗?


您需要先定义:$dbc

1
 $code = mysqli_real_escape_string ($dbc, $_GET['invite']);

例如:

1
$dbc = mysqli_connect("localhost","my_user","my_password","world");

Book of Zeus已经给您答案。这供您将来参考(并希望在将来对其他人有所帮助)。

学会阅读错误消息并尝试找出可能导致它们的原因很有帮助。 :)

这篇文章准确地告诉您问题出在哪里,从哪里开始寻找。

1
Warning: mysqli_error() expects parameter 1 to be mysqli, null given.

该消息告诉您问题是提供给mysqli_errorparameter 1,并且当mysqli_error期望它是mysqli时是null

因此,请查看您提供给mysqli_error的第一个参数,您将看到它是$dbc。现在您知道问题是在调用mysqli_error()$dbc为空。因此,看看$dbc可以是null的方式。哦,对了-您没有声明它并为其分配任何内容,因为在代码中使用它的第一位是在这里:

1
$code = mysqli_real_escape_string ($dbc, $_GET['invite']);

就像它已经不是null一样被使用。由于这是代码的开头,因此问题在于您忘记了通过连接数据库来声明和初始化它。问题解决了。 :)


mysqli_error($dbc)中的未定义变量$dbc。您需要在此处放置连接对象。


嗨,请不要混淆mysql_connect();mysqli_connect();

尝试如下更改

1
$conn=mysqli_connect("yourhost","username","password","database-name") or die("initial host/db connection problem");`

然后,如果其已连接,则使用

1
mysqli_query($conn,"your query string") or die ("query not executed");`

现在工作正常!
(mods,删除了quer.r.y)