Php 警告:mysqli_query()至少需要2个参数,1个给定。MYSQLI的新特性
我想解释一下,我已经使用mysql大约一个月了,直到我注意到它实际上在PHP5.5.0中被弃用。因此,我尝试将我的MYSQL代码切换到MYSQLI,不幸的是,这是一个巨大的适得其反的结果,我知道有很多答案,但它们提供的答案对我没有帮助,或者我可能不理解,以下是错误: 警告:mysqli_query()至少需要2个参数,1个给定(第10行) 及 警告:mysqli_fetch_assoc()期望参数1为mysqli_结果,给定为null(第11行) 以下是我的错误源代码:Php 警告:mysqli_query()至少需要2个参数,1个给定。MYSQLI的新特性,php,mysqli,Php,Mysqli,我想解释一下,我已经使用mysql大约一个月了,直到我注意到它实际上在PHP5.5.0中被弃用。因此,我尝试将我的MYSQL代码切换到MYSQLI,不幸的是,这是一个巨大的适得其反的结果,我知道有很多答案,但它们提供的答案对我没有帮助,或者我可能不理解,以下是错误: 警告:mysqli_query()至少需要2个参数,1个给定(第10行) 及 警告:mysqli_fetch_assoc()期望参数1为mysqli_结果,给定为null(第11行) 以下是我的错误源代码: <?php //s
<?php
//session_start();
$link = mysqli_connect("localhost", "user", "password"); // MySQL Host , Username and password
$selected_db = mysqli_select_db($link, 'database'); // MySQL Database
mysqli_query($link, "SET NAMES utf8");
function fetchinfo($rowname,$tablename,$finder,$findervalue)
{
if($finder == "1") $result = mysqli_query("SELECT $rowname FROM $tablename");
else $result = mysqli_query("SELECT $rowname FROM $tablename WHERE `$finder`='$findervalue'");
$row = mysqli_fetch_assoc($result);
return $row[$rowname];
}
?>
将$link
作为第一个参数传递到mysqli\u查询
:
function fetchinfo($rowname,$tablename,$finder,$findervalue)
{
if($finder == "1") $result = mysqli_query($link, "SELECT $rowname FROM $tablename");
else $result = mysqli_query($link, "SELECT $rowname FROM $tablename WHERE `$finder`='$findervalue'");
$row = mysqli_fetch_assoc($result);
return $row[$rowname];
}
首先,您没有将数据库连接传递给mysqli\u query()
函数。它需要作为该函数中的第一个参数传递
然后会出现变量范围问题,您可以在自定义函数中传递连接变量,也可以使用全局变量
参考资料:
通过函数传递时:
function fetchinfo($link, $rowname,$tablename,$finder,$findervalue)
{
if($finder == "1") $result = mysqli_query($link, "SELECT $rowname FROM $tablename");
else $result = mysqli_query($link, "SELECT $rowname FROM $tablename WHERE `$finder`='$findervalue'");
$row = mysqli_fetch_assoc($result);
return $row[$rowname];
}
作为全球:
function fetchinfo($rowname,$tablename,$finder,$findervalue)
{
global $link;
if($finder == "1") $result = mysqli_query($link, "SELECT $rowname FROM $tablename");
else $result = mysqli_query($link, "SELECT $rowname FROM $tablename WHERE `$finder`='$findervalue'");
$row = mysqli_fetch_assoc($result);
return $row[$rowname];
}
- 选择权在你
您还将注意到,如果您没有使用该自定义函数,您的代码将可以工作
- 试试看,你就会明白我的意思了
但是,如果仍然出现错误,则查询可能失败
- 使用
mysqli\u error($link)
到mysqli\u query()
检查错误
参考资料:
N.B.:这两个变量都是未知的$rowname
和$tablename
,因此请确保它们确实有值,并且不包含MySQL会抱怨的字符,例如撇号、连字符、空格等
如果是这种情况,您需要用记号包装这些变量
即:
还有其他未知的变量,以及如何使用该函数开始
鉴于您发布的信息,这是目前我能给您的最好答案
- 再次检查错误。
Protip:在谷歌中粘贴错误。它避免了像这样的问题被发布,而这些问题已经被问了太多次。是的,但我不明白给出了什么答案,要么它们没有意义,要么根本不起作用。我在下面为你发布了我的答案。谢谢!赞赏:)警告:mysqli_query()预期参数1为mysqli,第10行为null警告:mysqli_fetch_assoc()预期参数1为mysqli_result,第11行为null变量范围。(超出范围)。这个答案遗漏了哪一个。我可以得到变量范围的代码吗?不为我工作:/
("SELECT `$rowname` FROM `$tablename`")