php - mysqli_query 上的 undefined variable

标签 php html css mysqli twitter

我有类似的代码,没有错误,但是当我尝试查询我的数据库时,我遇到了几个错误。谁能帮忙?

错误:

Notice: Undefined variable: link in C:\wamp64\www\twitter clone\functions.php on line 22

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\wamp64\www\twitter clone\functions.php on line 22

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\wamp64\www\twitter clone\functions.php on line 24

代码;

<?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";
    }
}

?>

最佳答案

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

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

global $link

请看this page阅读有关 PHP 中的变量作用域的更多信息。


编辑:

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

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 可能未定义。我猜你知道这一点,只是想说明一下,以防你在这方面出错。

关于php - mysqli_query 上的 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47558647/

相关文章:

php - jQuery 和 $_GET

php - 将 mysql 代码转换为 PDO 没有输出

html - 如果我在一个元素上有 2 个属性,将显示哪一个?

html - 是否可以仅使用 CSS 定位 <p> </p>?

javascript - 切换一个不是这个父级的 div

php - GROUP_CONCAT 带逗号的空字符串

javascript - AJAX 表单未提交并给出错误

c# - 为什么自定义 html 助手无法正确呈现标签

javascript - 滑动下划线边框以与事件网页配合使用

css - 非标准自由宽度高度 HTML 表格