2017-11-18 129 views
-1

實施例:如何在轉義後將原始字符串保存到MYSQL中?

<?php 
$uid = 'Pat/r'ick'; 
$string = mysql_escape_string($uid); 

$query = 'INSERT INTO user (uid) VALUES ($string)'; 

?> 

轉義字符串,MySQL的插入值之後 '專利// R /' ICK」到表中。我的理解是mysql_escape_string只是爲了轉義字符串,以便查詢可以運行沒有任何問題,然後仍然應該能夠保存逃逸後的字符串的原始值。在這種情況下,我期望Mysql將「Pat/r'ick」值保存到表中。

有人可以幫助我如何保存原始字符串轉義查詢後的字符串?

+1

停止使用'mysql'。移動到PDO或mysqli –

+0

如果你想保存原始字符串,那麼你爲什麼逃脫。只需將該值放入變量並將該var傳遞給查詢即可。 – Rits

+0

@Rits變量不會被插入,因爲它包含單引號。正如你所看到的,我使用php來聲明變量並將其傳遞給mysql查詢。 – EDDY

回答

1

也許你已經啓用了魔術引號並且該字符串是雙引號。所以,關閉php.ini中的魔術引號。

http://php.net/manual/en/security.magicquotes.php

+0

從5.3版本開始,PHP一直不支持Magic Quotes,自2014年以來,該版本不受支持(即使是安全更新)。不要關閉魔術引號:**升級到支持的PHP版本**。 – Quentin

+0

問題中的代碼顯示輸入來自硬編碼字符串,因此它不會通過魔術引號引擎(它不是來自腳本外部),所以這不能作爲答案...除了那裏對於OP中的代碼來說,很明顯是使用了一個未經測試的過分簡化的示例,並且可能是在說謊而不是使用外部輸入......並且他們沒有展示他們如何檢查數據,因此可能會添加轉義當他們從數據庫中提取數據時。也許。這個問題很糟糕。 – Quentin

相關問題