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

时间:2014-12-13 21:27:59

标签: php mysql mysqli

我收到了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并回复它。它工作正常,一切都正确打印。任何想法为什么会$link null

来自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文件:

$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
}

2 个答案:

答案 0 :(得分:0)

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

第二种可能性是$link在下一行中被覆盖,但有一些简单的错误,如:

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

答案 1 :(得分:0)

您的查询中存在语法错误:

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

$item必须是单个qoutes。

最好使用准备好的陈述。