2012-11-13 119 views
0

我想更新我的MySQL數據庫中的文本字段,但它不會更改時運行查詢。我試過剝去特殊字符,但它仍然不起作用。MySQL不更新文本字段與textarea

更新:它返回以下錯誤:它提供了以下錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'datatext='LET OP! Aantal Mate' at line 1

下面是數據:

的HTML

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<input type="hidden" name="nr" value="1"> 
<textarea rows="20" cols="50" name="text"></textarea> 
</form> 

的PHP

$change_text = $_POST['text']; 
$change_nr = $_POST['nr']; 
if ((!empty($change_text))&&(!empty($change_nr))) 
{ 
mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'"); 
} 

Struc TURE的MySQL(表名=表)

datanr = int(6) 
order = text utf8_general_ci 
+0

是否拋出一個錯誤。你試圖去除特殊字符 - 它是否在發送沒有特殊字符的文本時工作? – Muleskinner

+0

運行這個並告訴我們錯誤是什麼:mysql_query(「UPDATE table SET datatext ='$ change_text'WHERE datanr ='$ change_nr'」)或die(mysql_error()); –

+2

col在你的查詢中使用了什麼名稱** datatext **,但是你的結構顯示** order ** –

回答

1

,文本區域不怪。你的sql引用了你的表似乎沒有的列名。

您的模式有datanrorder,而更新查詢有datanrdatatext

一些更多的提示:

  1. 不使用mysql關鍵字作爲列或表名,或者至少,如果你必須使用`一段單列逃避它們。
  2. 始終驗證/淨化你的用戶輸入
  3. 不使用mysql但使用mysqlipdo或更好,但一個好的data access layer
+0

對不起,字段名稱是一樣的。我的錯誤:s – user1820315

+0

我終於解決了它,這是一個小的愚蠢的事情。我調用了一個MySQL列'order'...並且由於這是一個查詢語句,它返回一個錯誤。感謝所有的幫助! :) – user1820315

0

嘗試檢查與鍵存在,而不是空

if (array_key_exists('nr', $_POST)) { 
     $change_text = $_POST['text']; 
     $change_nr = $_POST['nr']; 
     mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'"); 
    } 
+0

OP的問題是'MySQL不用textarea更新文本字段' – GBD

+0

問題不在if語句中,因爲它會回顯消息。當我刪除datatext ='$ change_text'部分時,它也會運行查詢,因此它與將數據寫入數據庫文本字段有關。 – user1820315

0

調試代碼

var_dump($_POST); 

$change_text = $_POST['text']; 
$change_nr = $_POST['nr']; 

if ((!empty($change_text))&&(!empty($change_nr))) 
{ 
    $sqlString = "UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'"; 
    var_dump($sqlString); 
    mysql_query($sqlString) or die(mysql_errno() . " " . mysql_error()); 
} 
0

你的形式缺乏<輸入類型= 「提交」/ >。沒有提交按鈕,表單(和數據)不能提交。

0

哈哈!我知道這個問題!這是查詢。您必須圍繞列名使用這些特殊引號。像這樣:mysql_query(「UPDATE table SET datatext ='$ change_text'WHERE datanr ='$ change_nr'」);

注意`quotes aound datatext。現在你的腳本應該工作。如果沒有,我會關閉我的電腦和睡覺immediatelly笑

0

您的查詢應該是這樣的:

mysql_query("UPDATE table SET datatext='".$change_text."' WHERE datanr=".$change_nr);