Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 警告:mysqli_query()至少需要2个参数,1个给定。MYSQLI的新特性_Php_Mysqli - Fatal编程技术网

Php 警告:mysqli_query()至少需要2个参数,1个给定。MYSQLI的新特性

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

我想解释一下,我已经使用mysql大约一个月了,直到我注意到它实际上在PHP5.5.0中被弃用。因此,我尝试将我的MYSQL代码切换到MYSQLI,不幸的是,这是一个巨大的适得其反的结果,我知道有很多答案,但它们提供的答案对我没有帮助,或者我可能不理解,以下是错误:

警告:mysqli_query()至少需要2个参数,1个给定(第10行)

警告:mysqli_fetch_assoc()期望参数1为mysqli_结果,给定为null(第11行)

以下是我的错误源代码:

<?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`")