我有一个html表单,我想使用phpmyadmin将其数据提交到wamp中的特定数据库,连接成功完成。但是,无法提交数据。我在提交表单中的数据后收到此消息:
Successful connection
( ! ) Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in C:\wamp\www\Ex\insert-data.php on line 11
Call Stack
# Time Memory Function Location
1 0.0005 136600 {main}( ) ..\insert-data.php:0
2 0.0023 144480 mysqli_query ( ) ..\insert-data.php:11
Error inserting new records!
'insert-data.php'中的我的代码是:
<?php
if(isset($_POST['submitted'])){
include('connect.php');
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$sqlinsert=
"INSERTINTO`test`(`FName`,`LName`)VALUES('$fname','$lname')";
if(!mysqli_query($dbconn,$sqlinsert)){
die('Error inserting new records!');
}
echo "1 record added to database";
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<h1>Insert Data into DB</h1>
</head>
<body>
<form method="post" action="insert-data.php" >
<input type="hidden" name="submitted" value="true" />
<label>First Name</label>
<input type="text" name="fname" />
<label>last Name</label>
<input type="text" name="lname" />
<input type="checkbox" name="check" />
<input type="radio" name="radios" />
<input type="submit" value="submit"></button>
</form>
</body>
</html>
有什么想法吗? ....谢谢
答案 0 :(得分:2)
您在评论中发布了连接代码(属于我可能添加的问题),基于mysql_
。
您需要使用mysqli
那些不同的MySQL API不会混用。您必须使用从连接到查询的相同内容。
从手册中摘录的例子:
<?php
//conection:
$link = mysqli_connect("myhost","myuser","mypassw","mybd")
or die("Error " . mysqli_error($link));
并记住将$link
替换为$dbconn
和您自己的凭据。
这对您没有帮助:
die('Error inserting new records!');
这样做:
or die(mysqli_error($dbconn));
由于您对此不熟悉,请立即使用预先准备好的陈述。
参考文献:
您现有的代码向SQL injection开放。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
为了争论,请在INSERT
和INTO
之间加一个空格:
$sqlinsert= "INSERT INTO `test` (`FName`,`LName`) VALUES ('$fname','$lname')";
你似乎在评论中提到了它们是分开的,但我还是说了。
<强>连接:强>
您的连接应该是这样,并用您自己的凭据替换xxx
。
$db_host = "xxx";
$db_username = "xxx";
$db_pass = "xxx";
$db_name = "xxx";
$dbconn = mysqli_connect("$db_host","$db_username","$db_pass","$db_name")
or die("Error".mysqli_error($dbconn));
,没有别的。根本没有mysql_
的实例。
旁注:@
符号是错误抑制器。一切正常后,您可以将它们重新添加。
结束说明:
感谢Liam(Sorsby)。
答案 1 :(得分:0)
使用分隔的单词,例如
INSERT INTO `test` (`FName`,`LName`) VALUES ('$fname','$lname')";