0

我在 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 :(";
    }

?>
4

3 回答 3

2

"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 注入问题。

于 2013-04-16T08:33:36.683 回答
0

试试这个连接。

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());  

希望能帮助到你!

于 2013-04-16T08:40:08.833 回答
0

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

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

你为什么mysql_connect($hname, $username, $password)用 mysql_query 传递。您已经在 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扩展

希望这可以帮助你:)

于 2013-04-16T08:41:03.673 回答