警告:mysqli_query() 至少需要 2 个参数,1 个在第 10 行的 C:\wamp64\www\OBJEPRO\dbcrud.php 中给出

Posted

技术标签:

【中文标题】警告:mysqli_query() 至少需要 2 个参数,1 个在第 10 行的 C:\\wamp64\\www\\OBJEPRO\\dbcrud.php 中给出【英文标题】:Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp64\www\OBJEPRO\dbcrud.php on line 10警告:mysqli_query() 至少需要 2 个参数,1 个在第 10 行的 C:\wamp64\www\OBJEPRO\dbcrud.php 中给出 【发布时间】:2017-09-27 09:31:20 【问题描述】:

我正在使用 OOP、php 创建一个简单的 CRUD,但是当我运行 add.php 以及更新和删除文件时出现错误。每个文件中的相同错误(add.php、update.php、delete.php)

以下是错误:

注意:未定义索引:第 12 行 C:\wamp64\www\OBJEPRO\add.php 中的 Supplier_ID

注意:未定义索引:C:\wamp64\www\OBJEPRO\add.php 第 12 行中的 Company_Name

警告:mysqli_query() 需要至少 2 个参数,1 个在第 10 行的 C:\wamp64\www\OBJEPRO\dbcrud.php 中给出

这是 add.php 中的代码

<?php
require_once("header.php");
require_once("dbcrud.php");
if (isset($_POST['submit'])) 




    $dbcrud=new dbcrud;


    $result=$dbcrud->create($_POST['Supplier_ID'],$_POST['Company_Name']);
        if($result)
            echo "<br />";
            echo "Successfully added.";
        else
            echo "<br />";
            echo "Error!";
        

?>
<p><h3>Add Supplier:</h3></p>
<form action="" method="POST">
<p>Supplier ID: <input type="text" name="Supplier_ID"></p>
<p>Company Name: <input type="text" name="Company_Name"></p>
<p><input type="submit" name="submit" value="Save"></p>
</form>

这是 dbcrud.php 中的代码:

<?php
require_once("dbconn.php");

class dbcrud 

        public function __construct()
        $dbconn=new dbconn;
    
    public function create($Supplier_ID, $Company_Name)                        
        $result=mysqli_query("INSERT INTO suppliers(Supplier_ID, Company_Name) VALUES('$Supplier_ID','$Company_Name')");
        return $result;
    

    public function read()
        $result=mysqli_query("SELECT * suppliers");
        return $result;
    
    public function update($Supplier_ID, $Company_Name)
        $result=mysqli_query("UPDATE suppliers SET Company_name='$Company_Name' WHERE Supplier_ID=$Supplier_ID'");
        return $result;

    
    public function delete($Supplier_ID)
        $result=mysqli_query("DELETE FROM suppliers WHERE Supplier_ID=$Supplier_ID");
        return $result;
    




?>

谁能帮帮我?

【问题讨论】:

嗯,您收到的错误消息非常清楚,并指出了问题所在。您确实查看了文档以了解如何正确使用该功能?如果是这样,那么您对那个错误消息究竟是什么不理解? 你的构造函数其实没用 我还是个学生,还在学习,顺便说一句。 【参考方案1】:

mysqli_query() 的文档清楚地说明了如何使用该方法的两种替代方法。你把两者混合,这是行不通的。

忽略很多其他问题,我敢说对你的课程的这种修改会让你更接近你正在寻找的东西。它将数据库连接对象存储在类属性中,以便可以将其重用于实际查询。

<?php
require_once("dbconn.php");

class dbcrud 
    private $dbconn;

    public function __construct()
        $this->dbconn = new dbconn;
    
    public function create($Supplier_ID, $Company_Name)                        
        $result = mysqli_query(
            $this->dbconn, 
            "INSERT INTO suppliers(Supplier_ID, Company_Name) VALUES('$Supplier_ID','$Company_Name')"
        );
        return $result;
    

    public function read()
        $result = mysqli_query(
            $this->dbconn, 
            "SELECT * FROM suppliers"
        );
        return $result;
    
    public function update($Supplier_ID, $Company_Name)
        $result = mysqli_query(
            $this->dbconn, 
            "UPDATE suppliers SET Company_name='$Company_Name' WHERE Supplier_ID=$Supplier_ID'"
        );
        return $result;

    
    public function delete($Supplier_ID)
        $result = mysqli_query(
            $this->dbconn, 
            "DELETE FROM suppliers WHERE Supplier_ID=$Supplier_ID"
        );
        return $result;
    



但这只是解决方案的一部分。您确实需要通过一些教程来学习如何编写数据库代码。一方面,您的代码中存在巨大的安全隐患。您需要了解使用“准备语句”结合“参数绑定”来防止sql注入漏洞的好处。

因此,以此为起点,许多其他问题仍未得到解答...

【讨论】:

谢谢!我还是个学生,还在学习,但非常感谢。

以上是关于警告:mysqli_query() 至少需要 2 个参数,1 个在第 10 行的 C:\wamp64\www\OBJEPRO\dbcrud.php 中给出的主要内容,如果未能解决你的问题,请参考以下文章

警告:mysqli_query():无法获取 mysqli [重复]

得到通知是未定义的变量 $con 和警告 mysqli_query 期望参数 1 是 mysqli

mysqli_query 上的未定义变量

警告:mysqli_free_result() 再次 [重复]

让 mysqli_query 执行的问题

win10安装CUDA出现警告,该怎么解决