2013-07-23 24 views
-1

我有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表

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

但它給了我錯誤解析錯誤,期待T_STRING' or T_VARIABLE'或'T_NUM_STRING'在C:\ wamp \ www \ lib中郭寶宏\ theGamer.php上線8

+0

其中第8行? – Bora

+0

不確定這是否是問題的根源,但嵌套在'$ sql =「中的單引號INSERT INTO books(bID,book)VALUES('','$ _ POST ['books']')」;'will肯定會導致問題。爲什麼不在這裏使用'$ book'變量而不是'$ _POST ['books']'? – godfrzero

+0

$ sql =「INSERT INTO books(bid,book)VALUES('','$ book')」;寫這個簡單的你也可以從$ _post ['books']'中刪除''並寫'$ _post [books]'; –

回答

1

使用{}各地值

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

您的代碼很容易受到SQL注入,使用Mysqli OR PDO與準備聲明。

編輯

而且mysql_query()要求第一個參數爲SQL查詢

mysql_query($con,$sql) 

應該

mysql_query($sql,$con) 

EDIT2

您還沒有選擇數據庫。爲此,請使用mysql_select_db

+0

仍然不能正常工作 –

+0

@JaneMarjana查看編輯答案。 –

+0

yah工作,但現在給它錯誤:沒有選擇數據庫 –

0

試試這個查詢:

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

仍然不能正常工作 –

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"; 
+0

現在它給出這個錯誤mysql_query()期望參數1是字符串,在第10行給出的C:\ wamp \ www \ library \ theGamer.php中的資源 –

+0

參數mysql_query括號中的方法錯誤。 – Kickstart

1

在$ SQL VAR應該是:

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

只需刪除 '從$ _ POST [' 書]

+0

仍然不能正常工作 –

+0

好的...讓我們按照正確的方式來做: – John

+0

$ sql =「插入'書籍'('bid','book')VALUES('','$ _ POST [books]')」; – John

0

使用$書籍在查詢,而不是:

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

我編輯了我的代碼,但不工作$ book = $ _ POST ['books']; $ sql =「INSERT INTO books(bid,book)VALUES('','$ book')」; –

+0

您尚未選擇數據庫。 mysql_select_db('your database name',$ con); –

+0

$ con = mysql_connect(「localhost」,「root」,「」); mysql_select_db('library',$ con); 然後你可以繼續插入。 –

0

該聲明是亂七八糟的引號。如果您在引號內使用超級全局變量或arays,那麼使用大括號很好。正確的說法應該看起來像。

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