2013-04-16 50 views
0

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

错误: 警告:请求mysql_query()预计参数2是资源,在串C中给出:\ XAMPP \ htdocs中\ test.php的第19行

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

?> 

回答

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()打开的最后一个链接。

但是,如果你是特别传递连接语句进行查询,你应该通过作为资源。目前您正在以字符串形式传递。不要将连接语句放在引号中。

还删除数据库和表名称的单引号。

你需要的是:

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扩展应使用

希望这有助于你:)

+0

谢谢!这工作和解决了我的问题。再次感谢! :) – user2285563

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

+0

错误消失,但“詹姆斯”(值)在数据库 – user2285563

+0

你也给参数太多,不进入到'mysql_connect()'。没有'$ db'参数,你必须用'mysql_select_db()'单独执行。看到我更新的答案。 – Barmar

+0

谢谢你这样做,你问我的方式,得到这个错误:警告:mysqli_query()期望参数1是mysqli,字符串给出在C:\ xampp \ htdocs \ test.php在线20 – user2285563

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

希望它有帮助!

+0

你也可以用来连接你的数据库:mysql_connect($ hname,$ username,$ password)...然后mysql_select_db($ db).. – user2223698