【问题标题】:MySQL Insert Query asks for resourceMySQL 插入查询请求资源
【发布时间】:2013-04-16 08:31:08
【问题描述】:

我在 xampp 上运行以下代码(完美安装)。我已经用 mysqli 替换了 mysql 并重新排列了查询(先连接,稍后插入语句),但都无济于事。请帮忙。

错误: 警告:mysql_query() 期望参数 2 是资源,字符串在第 19 行的 C:\xampp\htdocs\test.php 中给出

<?php


    $hname = "localhost";
    $username = "root";
    $password = "";
    $db = "test";

    $connect = mysql_connect($hname, $username, $password, $db);


    if ($connect) {
        echo "Connected to Database <br /> <br />";

        $ins = "INSERT INTO 'test'.'testtable' (name) VALUES ('james')";

        //mysql_select_db ($connect, "users");

        if (mysql_query("INSERT INTO 'test'.'testtable' (name) VALUES ('james')", "mysql_connect($hname, $username, $password, $db)")) {
            echo "Values Entered Successfully. Your Account was created";
        } else {
            echo "Your Account was not created";

        }

    }   else {
            echo "Failed to Connect :(";
    }

?>

【问题讨论】:

    标签: php mysql parameters insert resources


    【解决方案1】:

    "mysql_connect($hname, $username, $password, $db)" 不应该用引号引起来。您想调用函数并将结果作为参数传递,而不是传递字符串。

    但是你真的应该把它作为一个单独的语句来调用,这样你就可以检查错误:

    $con = mysql_connect($hname, $username, $password) or die ("Could not connect to DB: ".mysql_error());
    mysql_select_db($db, $con);
    
    mysql_query("INSERT INTO 'test'.'testtable' (name) VALUES ('hunaid')", $con);
    

    您的代码的另一个问题是mysql_query 的成功并不表明是否插入了任何行,它只是表明查询在语法上是有效的。您需要致电mysql_affected_rows() 以了解插入了多少行。

    你真的不应该使用 mysql 扩展,它们已被弃用。您应该使用 mysqli 或 PDO。这将允许您使用准备好的语句,以避免 SQL 注入问题。

    【讨论】:

    • 错误消失但“james”(值)未输入数据库
    • 您还给mysql_connect() 提供了太多参数。没有$db 参数,您必须单独使用mysql_select_db()。请参阅我的更新答案。
    • 谢谢你按照你的要求做了,得到了这个错误:警告:mysqli_query() 期望参数 1 是 mysqli,字符串在 C:\xampp\htdocs\test.php 中给出20
    • 你需要阅读mysqli的文档。参数与相应的 mysql 函数不同。这是mysqli_query($con, "INSERT ...");
    【解决方案2】:

    mysql_connect 中没有$db 参数。删除它。

    查看此链接以获取mysql_connect 参数http://php.net/manual/en/function.mysql-connect.php

    你为什么要通过 mysql_query 传递 mysql_connect($hname, $username, $password)。您已经在 MySQL 查询之前创建了一个连接。如果未指定链接标识符,则假定为mysql_connect() 打开的最后一个链接。

    但是,如果您特别喜欢将连接语句传递给查询,则应该将其作为资源传递。目前,您作为字符串传递。不要将 connect 语句括在引号中。

    同时删除 db 和 table name 周围的单引号。

    你需要的是:

    if (mysql_query("INSERT INTO test.testtable (name) VALUES ('hunaid')", mysql_connect($hname, $username, $password))) {
        echo "Values Entered Successfully. Your Account was created";
    } else {
       echo "Your Account was not created";
    
    }
    

    但我觉得这就够了

    if (mysql_query("INSERT INTO test.testtable (name) VALUES ('hunaid')")) {
        echo "Values Entered Successfully. Your Account was created";
    } else {
       echo "Your Account was not created";
    }
    

    无需指定连接语句,因为您已经在顶部创建了它。

    另外,而不是在查询中指定数据库。在运行查询之前添加mysql_select_db 以选择dB。

    所以完整的事情将是:

    $hname = "localhost";
    $username = "root";
    $password = "";
    $db = "test";
    
    $connect = mysql_connect($hname, $username, $password);
    
    if ($connect) {
    
        echo "Connected to Database <br /> <br />";
    
        mysql_select_db($db);
    
        $ins = "INSERT INTO testtable (name) VALUES ('james')";
    
        if (mysql_query($ins)) {
             echo "Values Entered Successfully. Your Account was created";
        } else {
            echo "Your Account was not created";
    
        }
    }   else {
        echo "Failed to Connect :(";
    }
    

    避免使用 mysql* 函数。

    此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应使用 MySQLiPDO_MySQL 扩展名

    希望对你有帮助:)

    【讨论】:

    • 谢谢!这有效并解决了我的问题。再次感谢! :)
    【解决方案3】:

    试试这个连接。

    mysql_connect("localhost", "root", "password") or die(mysql_error());
        echo "Connected to MySQL<br />";
    mysql_select_db("test") or die(mysql_error());
    
    
    For the MYSQL INSERT try:
    
    
    mysql_query("INSERT INTO testtable (name) VALUES('hunaid') ") 
    or die(mysql_error());  
    

    希望对你有帮助!

    【讨论】:

    • 你也可以用这个来连接你的数据库:mysql_connect($hname, $username, $password) ... 然后 mysql_select_db($db) ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多