2013-08-28 57 views
0

我有一些嚴重的困難,試圖讓我的php sql INSERT工作。我試圖顯示用戶數據,但它只是回聲,「INSERT INTO客戶(cust_last,cust_first)VALUES('user','data')完成。」PHP SQL插入不正常

顯然它與sql語句有關,但它是直接從W3School的PHP INSERT示例複製,所以我不確定它爲什麼不起作用。我不應該使用「」或什麼?

感謝您的幫助!

<?php 
$db = odbc_connect('database1', '', ''); 
$sql="INSERT INTO customer (cust_last, cust_first) 
VALUES ('$_POST[cust_last]','$_POST[cust_first]')"; 
$rs=odbc_num_rows($conn); 
odbc_close($conn); 
echo "1 record added."; 

?> 

HTML表單頁面:

<html> 
<body> 

<form action="insert.php" method="post"> 
Last Name: <input type="text" name="cust_last"> 
First Name: <input type="text" name="cust_first"> 
<input type="submit"> 
</form> 

</body> 
</html> 
+0

使用數組中的字符串,你需要用花括號來覆蓋他們,讓他們成爲{$ _POST ['cust_last']} ..你還需要注意SQL注入 – Ali

+0

它迴應了SQL語句,因爲你已經要求它被回顯。 「我試圖顯示用戶數據」該代碼塊不會顯示任何數據。它將*數據插入到'客戶'表中。 –

+1

我沒看到你用$ sql變量做任何事情。你不需要將它傳遞給某種函數來運行你的查詢? – hamobi

回答

3

PHP關聯數組需要周圍的按鍵單引號,所以$ _ POST [ 'cust_last']是一個有效的關鍵,而$ _ POST [cust_last] ISN 「T。當在引號之間的字符串中插入PHP變量時,你應該在它們周圍放置大括號。

因此,這將是一個適當的語句(假設cust_last和cust_first是列的名稱在客戶表):

$sql="INSERT INTO customer (cust_last, cust_first) VALUES ('{$_POST['cust_last']}','{$_POST['cust_first']}')"; 
+0

我很感激幫助,但它仍然只是回聲「插入客戶(cust_last,cust_first)VALUES('用戶','數據')完成。」(值'用戶'和'數據'確實反映輸入的信息)。我的問題是它回聲SQL語句,而不是執行它。 –

+1

那麼$ sql變量只是一個字符串,當你回顯它時,它只會打印該字符串。不知道發佈到php的代碼的具體情況,我從個人經驗中猜測,發佈頁面可能存在拼寫錯誤。 – jtoomey