mysqli_query 上的未定义变量
Posted
技术标签:
【中文标题】mysqli_query 上的未定义变量【英文标题】:Undefined Variable on mysqli_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";
?>
【问题讨论】:
所有错误都与第一个Variable scope问题有关。 Reference: What is variable scope, which variables are accessible from where and what are “undefined variable” errors? 当然!我需要将 $link 设为全局 不!我的意思是,是的,这会起作用,但你最好将它作为函数参数传递。 【参考方案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);
【讨论】:
以上是关于mysqli_query 上的未定义变量的主要内容,如果未能解决你的问题,请参考以下文章
得到通知是未定义的变量 $con 和警告 mysqli_query 期望参数 1 是 mysqli
尝试将 xampp 数据库表连接到 php:错误未定义变量:mysqli_query 和致命错误