首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL插入查询请求资源

MySQL插入查询请求资源
EN

Stack Overflow用户
提问于 2013-04-16 16:31:09
回答 3查看 662关注 0票数 0

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

错误:警告: mysql_query()要求参数2为C:\xampp\htdocs\test.php第19行中给定的资源和字符串

代码语言:javascript
复制
<?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 :(";
    }

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-16 16:41:04

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语句传递给查询,则应该将其作为资源传递。当前您是作为字符串传递的。不要用引号将connect语句括起来。

还要删除db和表名两边的单引号。

您需要的是:

代码语言:javascript
复制
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";

}

但我觉得这已经足够了

代码语言:javascript
复制
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";
}

不需要指定connect语句,因为您已经在顶部创建了它。

而且,不是在查询中指定db。在运行查询之前,添加mysql_select_db以选择dB。

因此,完整的内容将是:

代码语言:javascript
复制
$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起已弃用,并将在将来删除。而应使用或扩展名

希望本文能对您有所帮助:)

票数 0
EN

Stack Overflow用户

发布于 2013-04-16 16:33:37

"mysql_connect($hname, $username, $password, $db)"不应包含在引号中。您希望调用函数并将结果作为参数传递,而不是传递字符串。

但您真的应该将其作为单独的语句来调用,这样您就可以检查错误:

代码语言:javascript
复制
$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注入问题。

票数 2
EN

Stack Overflow用户

发布于 2013-04-16 16:40:09

试着这样连接。

代码语言:javascript
复制
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());  

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16032249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档