php - mysqli_query() 参数 1错误,但查询正确执行

  显示原文与译文双语对照的内容
0 0

我得到了PHP警告:

mysqli_query() 要求参数 1为 MySQLi,null为空

但是,如果查询运行良好并且结果正确执行,则打印到 error_log 文件。 我只是想知道为什么我收到警告。 下面的代码


<?
//initialize file sets $link variable with mysqli_connect() and contains the $item variable
require"php/initialize.php";

$tradeAmount = mysqli_query($link,"SELECT sum(amt) AS total FROM actfcast WHERE item=$item");
$tradeAmount_array = mysqli_fetch_array($tradeAmount);
?>

然后,我循环遍历 $tradeAmount_array 和 echo 。 它工作正常,一切都正确打印。 为什么它认为 $linknull

从Rizier123的注释中:


object(mysqli)#1 (19) { ["affected_rows"]=> int(1) ["client_info"]=> string(11)"5.5.38-35.2" ["client_version"]=> int(50538) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0)"" ["error_list"]=> array(0) { } ["field_count"]=> int(1) ["host_info"]=> string(25)"Localhost via UNIX socket" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(11)"5.5.40-36.1" ["server_version"]=> int(50540) ["stat"]=> string(152)"Uptime: 962856 Threads: 5 Questions: 252975480 Slow queries: 513 Opens: 319250 Flush tables: 1 Open tables: 20000 Queries per second avg: 262.734" ["sqlstate"]=> string(5)"00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(4660775) ["warning_count"]=> int(0) }

来自 initialize.php file:


$host="localhost";
$current_db="xxxxxx";
$current_dir="exp";
$dbuser="xxxxxxx";
$dbpw="xxxxxxx";

if (!(isset($_SESSION['user']) && $_SESSION['user']!= '')){
 $_SESSION['redirect'] = $_SERVER['REQUEST_URI'];
 header ("Location: http://www.xxxxx.com/".$current_dir."/signin.php");
}
else{
 $link = mysqli_connect($host, $dbuser, $dbpw, $current_db);
//more stuff
}

时间: 原作者:

0 0

第一个盲猜测是 $link 变量在函数或者类方法中创建,所以在 mysqli_query 行中它是不可见的。

第二个可能性是 $link 在下一行中被重写,并有一些简单错误如下:


if ($link = null)
{
 echo"Connection not established";
}

原作者:
0 0

你的查询中有语法错误:


mysqli_query($link,"SELECT sum(amt) AS total FROM actfcast WHERE item='$item'");

$item 必须在单个qoutes中。

你最好用准备好的语句。

原作者:
...