2017-08-01 95 views
-1

我一直在使用PHP構建一個帶有PHP & MySQL的系統。到目前爲止,一切都很好,但現在當我從文本字段中保存數據時,它已經開始添加轉義字符。例如,試圖挽救該字符串mysqli_real_escape_string - 似乎已停止工作

這是很好的

保存爲

它\好

我使用的插入查詢

$query = "INSERT INTO jobs(customerId, 
jobDateReceived, 
jobReceivedBy, 
jobPONo, 
jobCompletionDate, 
jobPrice, 
jobIncExVat, 
jobPriceEstimate, 
jobZeroPrice, 
jobDescription, 
jobEngraving, 
jobEngraveComplete, 
jobLaser, 
jobLaserComplete, 
jobWood, 
jobWoodComplete, 
jobQualityControl) 
VALUES('".$_SESSION['customerId']."', '" 
.$_POST['recDateField']."', '" 
.$_POST['recByField']."', '" 
.$_POST['purchOrderField']."', '" 
.$_POST['completionDateField']."', '" 
.$_POST['priceField']."', '" 
.$_POST['vatRadios']."', '" 
.$estimateYN."', '" 
.$zeroPriceYN."', '" 
.mysqli_real_escape_string($link, $_POST['descriptionField'])."', '" 
.$engravingYN."', 'N', '" 
.$laserYN."', 'N', '" 
.$woodYN."', 'N', 'I')"; 

任何人都可以幫助爲什麼這可能已停止工作?

+0

你檢查你的系統,以確保mysqli的PHP擴展是否正確裝入? – Difster

+1

您的腳本存在[SQL注入攻擊]的風險(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 即使[如果您正在轉義輸入,它不安全!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) 使用[編寫的參數化語句](http:// php。 net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

+4

如何停止使用轉義並使用預處理語句? –

回答

0

1)建議使用準備好的語句:使用帶綁定參數一份聲明中允許撇號

2)使用這些函數保存到數據庫中,他們將保留撇號之前存儲你的數據。

使用htmlentities($yourdata, ENT_QUOTES | ENT_HTML5, $encoding = 'UTF-8')將特殊字符轉換爲html實體。

使用htmlspecialchars() OR

使用addslashes()逃逸的特殊字符用反斜槓