html:
php:
php裡紅框部分需要把html裡,name="new_title_info"的值取得到,這裡要怎麼寫啊?我在最底下有寫echo . $sql來看看我插入的語句,之前結果發現後面值是空的,現在解圖這個改法直接提示
問題還是出在$sql="....這行,要怎麼改阿?
html:
php:
php裡紅框部分需要把html裡,name="new_title_info"的值取得到,這裡要怎麼寫啊?我在最底下有寫echo . $sql來看看我插入的語句,之前結果發現後面值是空的,現在解圖這個改法直接提示
問題還是出在$sql="....這行,要怎麼改阿?
<code>$_POST('key') 在“ ”双引号里面的关联数组不需要加‘ ’单引号 $sql="insert into table() values('$_POST[key]')";</code>
用句號來做concatenate你的字串。雖然這樣做不安全。更推薦用parameterized query
首先你這種純手寫的mysql_query是很容易被sql注入的。其次,如果懷疑是sql語句的問題,建議先echo一下具體的值是否滿足期望,做一些有效性的判斷,然後再組成sql語句。
簡單點分開寫
$name = $_POST['new_title_info'];
$class = $_POST['new_class_info'];
$sql = "Insert into table (xxx,xxx) values ($name,$class) ";
如果你們工作小組裡要求有代碼審查的話你會被罵死...
用戶輸入變量真心不能直接插入sql啊...
另外..你只要先打印一下你拼裝的sql語句..然後直接拿語句去資料庫執行就知道了...我目測問題出在單引號上
感覺也是單引號的問題.
你把sql語句印出來,看下格式對不對,放到mysql跑一跑不就看到問題了
你這樣使用單引號引用$_POST
是不起作用的。在PHP
裡單引號是不會執行內部變數的,你改成雙引號就可以了。這麼多回答已有人提出這樣容易被SQL
注入是很好的建議,你需要對接受的資料進行處理轉義處理防治SQL注入。
"INSERT INTO table_name (columns) values({$_POST['key']})",
用大括號括起來, 增加可讀性
說句題外話,所有的用戶輸入都要過濾,不要直接插數據庫
寫成$_POST[key] 的形式。
by the way!
不要直接拼sql語句,不安全。要做下預處理之類的措施,防止sql注入攻擊。