启者
我从我的PHP脚本得到错误,可能是查询,但我无法弄清楚发生了什么。我可以连接数据库,但我仍然从de“echo ERROR”行得到错误。
有谁知道我的代码出了什么问题?我感谢任何帮助!我花了几个小时来解决这个问题,但一无所获。
HTML表单
<form action="insert-info.php" method="post">
<input class="form1" type="text" value="TEXT ONE" name="textone" onfocus="if (this.value=='NTEXT ONE') this.value='';"/>
<input class="form1" type="text" value="TEXT TWO" name="texttwo" onfocus="if (this.value=='TEXT TWO') this.value='';"/>
<input class="form2" type="text" value="TEXT THREE" name="textthree" onfocus="if (this.value=='TEXT THREE') this.value='';"/>
</form>
数据库连接并插入
<?php
$host="localhost"; // Host name
$username="***"; // Mysql username
$password="***"; // Mysql password
$db_name="***"; // Database name
$tbl_name="insertinfo"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Get values from form
$textone=$_POST['textone'];
$texttwo=$_POST['texttwo'];
$textthree=$_POST['textthree'];
// Insert data into mysql
$sql="INSERT INTO $tbl_name('textone', 'texttwo', 'textthree') VALUES ('$textone', '$texttwo', '$textthree')";
$result=mysql_query($sql);
// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<br />";
echo "<a href='insert.php'>Back to main page</a>";
}
else {
echo "ERROR";
}
?>
<?php
// close connection
mysql_close();
?>
数据库结构
# Type Collation Null Pattern Extra
1 id int(4) None (none) AUTO_INCREMENT
2 textone varchar(50) utf8_bin None (none)
3 texttwo varchar(50) utf8_bin None (none)
4 textthree varchar(50) utf8_bin None (none)
答案 0 :(得分:3)
看起来问题只是INSERT查询的列名。你不需要单引号。
$sql="INSERT INTO $tbl_name(textone, texttwo, textthree) VALUES ('$textone', '$texttwo', '$textthree')";
这应该有效。
编辑:echo_Me和Mayank的警告和建议是生产代码必须考虑的事情!
答案 1 :(得分:0)
实际上你没有选择数据库和连接变量。因为你正在使用字符串。你需要删除那样的引号
mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
您需要在代码中修复一些内容。
转义你的POST变量。
更改为PDO或MYSQLI。
通过回显系统错误来跟踪错误。
答案 2 :(得分:0)
使用mysql_error()打印错误消息。它会告诉您有关查询失败原因的更多信息。请注意,不推荐使用此功能。我建议使用mysqli或PDO数据库类。
答案 3 :(得分:0)
$sql=sprintf(
"INSERT INTO
$tbl_name(textone, texttwo, textthree)
VALUES ('%s','%s','%s')",
mysql_real_escape_string($textone),
mysql_real_escape_string($texttwo),
mysql_real_escape_string($textthree)
);
答案 4 :(得分:0)
尝试这样
无需在column
names
查询中' '
INSERT
内提供 $sql="INSERT INTO $tbl_name(textone,texttwo,textthree) VALUES ('$textone', '$texttwo', '$textthree')";
$result=mysql_query($sql);
{{1}}。
{{1}}