在表单提交时插入查询给出错误

时间:2013-07-23 11:02:03

标签: php html mysql

我有html表格

    <form name="booksInput" action="theGamer.php" method="post">
    Book Name: <input type="text" name="books">
    <input type="submit" value="Submit" name="subBooks">
</form> 

用于抓取然后插入值的PHP代码在

之下
$con=mysql_connect("localhost","root","","library");
$book=$_POST['books'];
$sql="INSERT INTO books (bID, book) VALUES ('','$_POST['books']')";
if (!mysql_query($con,$sql))
{
 die('Error: ' . mysql_error($con));
 }
echo "1 record added";

这是mysql Table

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| bID   | int(11)     | NO   | PRI | NULL    | auto_increment |
| book  | varchar(30) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

但它给出了我的错误解析错误,在第8行的C:\ wamp \ www \ library \ theGamer.php中期待T_STRING' or T_VARIABLE'或'T_NUM_STRING'

7 个答案:

答案 0 :(得分:1)

围绕值使用{}

$sql="INSERT INTO books (bID, book) VALUES ('','{$_POST['books']}')";

您的代码容易被sql注入,使用MysqliPDO准备好的语句。

修改

同样mysql_query()需要第一个参数作为sql查询

mysql_query($con,$sql)

应该是

mysql_query($sql,$con)

<强> EDIT2

您还没有选择数据库。请使用mysql_select_db

答案 1 :(得分:1)

$ sql var应为:

$sql="INSERT INTO books (bID, book) VALUES ('','$_POST[books]')";

只需删除'from $ _POST ['books']

答案 2 :(得分:0)

尝试这一个查询:

$sql="INSERT INTO books (bID, book) VALUES (NULL,'{$_POST['books']}')";

答案 3 :(得分:0)

POST中有额外的引号。

个人不是将数组直接放入字符串而不是连接它们的粉丝所以试试这个: -

$con=mysql_connect("localhost","root","","library");
$book=$_POST['books'];
$sql="INSERT INTO books (bID, book) VALUES ('','".$_POST['books']."')";
if (!mysql_query($sql, $con))
{
 die('Error: ' . mysql_error($con));
 }
echo "1 record added";

请注意,您也会对SQL注入攻击敞开大门。用最少的工作来避免这种情况: -

$con=mysql_connect("localhost","root","","library");
$book=mysql_real_escape_string($_POST['books']);
$sql="INSERT INTO books (bID, book) VALUES ('','$book')";
if (!mysql_query($sql, $con))
{
 die('Error: ' . mysql_error($con));
 }
echo "1 record added";

答案 4 :(得分:0)

在查询中使用 $ books

$books = $_POST['books'];
$sql   = "INSERT INTO books (bID, book) VALUES ('','$books')";

答案 5 :(得分:0)

该陈述与引号混淆。如果你在引号内使用超级全局变量或者数组,那么使用大括号是很好的。正确的陈述应该是这样的。

$sql="INSERT INTO books (bID, book) VALUES ('','{$_POST['books']}')";

答案 6 :(得分:0)

如果可以,请使用参数 PDO

多年后你会对自己说“谢谢”。

http://php.net/manual/ru/book.pdo.phphttp://www.php.net/manual/ru/pdo.prepare.php

但现在你需要这样做:

$sql="INSERT INTO books (bID, book) VALUES ('','".mysql_real_escape_string($_POST['books'])."')";

正如@Kickstart所说