2013-09-29 65 views
0

所以我一直在試圖弄清楚我的UPDATE SQL查詢出現了什麼問題,並通過這裏的問題進行搜索,只是爲了找出問題出在實際的文本上在數據庫表中更新。我的PHP應用程序是一個簡單的只是增加了描述簡單的網站鏈接到一個表(鏈接)如下:SQL更新查詢不會在PHP中工作

<form action="update.php" method="post"> 
    <p><input type="text" name="description" value="<?php echo($desc); ?>" /></p> 
    <p><input type="text" name="link" value="<?php echo($link); ?>" /></p> 
    <p><input type="submit" value="Save Changes" /></p> 
</form> 

顯然這個代碼是從edit.php頁,但是當我嘗試執行UPDATE語句在update.php中拋出一個錯誤,指出語法存在問題。這似乎只時,有一個「文本例如:

描述:‘媽媽的Tutition網站’

如果我參加了」出現在「媽媽的」使其成爲「媽咪」,那麼它更新罰款!任何人都可以提供一個解釋,爲什麼它這樣做和可能的補救措施/代碼來解決這個問題?

感謝您的幫助!

戴夫。

+0

使用MySQL真正轉義字符串,然後使用mysql庫。 – Mihai

+0

將你的代碼發佈到update.php – Mihai

+0

你看過最後生成的HTML嗎? – JAL

回答

1

使用PDO爲您的數據的基礎上處理

這是好之前先清理你的數據

$data = sanitize("Mom's");  
function sanitize($data){ 
     $data= htmlentities(strip_tags(trim($data))); 
     return $data; 
    } 

安全的方式

$name = "Mom's"; 
$db = new PDO('mysql:host=localhost;dbname=databasename', $user, $pass); 
//establish new connection 

$statement = $database->prepare("UPDATE TABLE xyz SET name=?"); 
$statement->execute(array($name)); 

這會更安全本身。你不需要做手動轉義。

或者使用

$msg = mysql_real_escape_string($string); 

的情況下,插入數據

+0

感謝您的支持信息,它工作得很好!不勝感激! – GeordieDave1980

-1

在SQL中插入'會引發錯誤是很危險的。它被稱爲SQL注入。嘗試使用像htmlentities()或addslashes()這樣的PHP函數來處理'插入前'。

+2

SQL注入不是簡單地在SQL中插入'''......插入一個'''可能非常有效,但它必須被轉義,無論是在代碼中手動還是通過使用預準備語句 –

0

因爲當它終於轉化爲一個UPDATE語句就會像

...somecolname = 'Mum's.....' 

和單引號看起來像字符串的結尾。需要用兩個單引號替換。組建成聲明