2016-03-03 46 views
-3

我有一個自動調用產品信息的表單,當用戶輸入產品名稱時,它使用自動完成來拉取產品描述當表單調用數據時,樣本數據可能會是這樣的:sql調用這個字符做奇怪的事情:「

三星40" HDTV電視

表格後保存,並重新加載,加載的數據看起來像這樣:

三星40

有沒有一種方法來批量編輯我的產品說明取代「以寸,或使這種不發生

使用SQL

插入的代碼示例:中

foreach (blabla) 
$productName = mysqli_real_escape_string($this->_con, trim($invoice_detail['productName'])); 
$query = "INSERT INTO invoice (`productName`) VALUES ('$productName') 
mysqli_query($this->_con, $query); 

代碼示例檢索:

<td><input value="<?php echo isset($item['productName']) ? $item['productName']: ''; ?>" type="text" data-type="productName" name="data[InvoiceDetail][<?php echo $key;?>][productName]" id="itemName_<?php echo $key+1?>"></td> 
+0

瞭解的方法制得(http://en.wikipedia.org/wiki/Prepared_statement)語句en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)並考慮使用PDO,[這真的很簡單](http ://jayblanchard.net/demystifying_php_pdo.html)。 –

+1

你能告訴我們插入這個代碼嗎?和顯示它的代碼。 – Halcyon

+0

@Halcyon當然,請給我一下,我會更新我的問題 – Steven

回答

3

你不轉義html特殊符號,您的代碼:

echo isset($item['productName']) ? $item['productName']: ''; 

應該是這樣的:在[PDO](http://php.net/manual/

echo isset($item['productName']) ? htmlspecialchars($item['productName']) : ''; 
+0

美麗!這工作完美,並保存了很多SQL頭痛。是否還有其他值得了解的特殊逃生,比如這個? – Steven

+0

有2個主要問題:sql注入和html注入,第一個你已經使用'mysqli_real_escape_string'作爲第二個'htmlspecialchars',當然也有javascript/csv/xml - 但它們是非常罕見的 –

+0

所以我有像產品線4個不同的領域,我應該爲他們每個人使用htmlspecialchars呢? – Steven