我在xampp上运行以下代码(完全安装)。我已经用mysqli替换了mysql,并重新排列了查询(连接优先,稍后插入insert语句),但都没有用。请帮帮忙。
错误:警告: 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 :(";
}
?>发布于 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和表名两边的单引号。
您需要的是:
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";
}不需要指定connect语句,因为您已经在顶部创建了它。
而且,不是在查询中指定db。在运行查询之前,添加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起已弃用,并将在将来删除。而应使用或扩展名
希望本文能对您有所帮助:)
发布于 2013-04-16 16:33:37
"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-16 16:40:09
试着这样连接。
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()); 希望它能帮上忙!
https://stackoverflow.com/questions/16032249
复制相似问题