【问题标题】:Undefined Variable on mysqli_querymysqli_query 上的未定义变量
【发布时间】:2018-05-13 12:11:48
【问题描述】:

我有类似的代码可以正常工作,但是当我尝试查询我的数据库时,我遇到了几个错误。有人可以帮忙吗?

错误:

注意:未定义变量:第 22 行 C:\wamp64\www\twitter clone\functions.php 中的链接

警告:mysqli_query() 期望参数 1 为 mysqli,在第 22 行的 C:\wamp64\www\twitter clone\functions.php 中给出 null

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,在第 24 行的 C:\wamp64\www\twitter clone\functions.php 中给出 null

代码;

<?php

session_start();

$link = mysqli_connect("localhost", "root", "pass", "twitter");
if (mysqli_connect_errno()) {
    print_r(mysqli_connect_error());
    exit();
}

if (isset($_GET['function']) == "logout"){
    session_unset();
}

function displayTweets($type) {
    if ($type == 'public'){
        $whereClause = "";
    }

    $query = "SELECT * FROM tweets ".$whereClause." ORDER BY 'datetime' DESC LIMIT 10";

    $result = mysqli_query($link, $query);

    if (mysqli_num_rows($result) == 0) {
        echo "No Tweets";
    }
}

?>

【问题讨论】:

标签: php html css mysqli twitter


【解决方案1】:

问题是您的 $link 变量不在函数的本地范围内。

解决此问题的一种方法是在函数的局部范围内定义变量,方法是在函数中添加以下行:

global $link

请查看this page 以了解有关 PHP 中变量范围的更多信息。


编辑:

更好的方法是通过将连接作为参数添加到函数来注入连接,这将使您的代码看起来像这样:

function displayTweets($type, $connection) {
    if ($type == 'public'){
        $whereClause = "";
    }

    $query = "SELECT * FROM tweets ".$whereClause." ORDER BY 'datetime' DESC LIMIT 10";

    $result = mysqli_query($connection, $query);

    if (mysqli_num_rows($result) == 0) {
        echo "No Tweets";
    }
}

在此之后,您将使用displayTweets('public',$link) 调用您的函数,其中“public”是类型,$link 是您定义的连接


此外,在您当前的函数中,$whereClause 可能未定义。我猜你知道这一点,只是想说明一下,以防你在这方面出错。

【讨论】:

  • 也许最好将连接作为函数参数注入。
  • 肯定会的。当我开始打字时忘记了,编辑了答案
  • 在编辑后的答案中注入连接时,不要忘记将其添加到函数调用的参数列表中:displayTweets(something, $link);
【解决方案2】:

您必须在 displayTweets 函数中使用 $link 变量作为全局变量 ($GLOBALS['link']) 或者您必须将 $link 作为参数传递。

$result = mysqli_query($GLOBALS['link'], $query);

displayTweets('public',$link);

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2011-06-11
    • 1970-01-01
    • 2021-02-27
    • 2015-06-01
    相关资源
    最近更新 更多