使用MySQL的简单PHP表单出错

时间:2013-11-21 11:24:26

标签: php jquery mysql database forms

启者

我从我的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)  

5 个答案:

答案 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}}