![](/img/trans.png)
[英]How can I escape single quotes when selecting data from MySQL through a php variable
[英]MySQL Query not inserted when PHP variable contains single quotes
當變量 $subject 具有單引號時,不會插入此查詢。 有沒有可能的解決方案?
mysql_query("INSERT INTO table (to_email_id,subject) values('$to','$subject');");
例如,考慮使用使用PDO的參數化查詢。
或者,將變量放在方括號{}中。
編輯:
我錯過了您的變量$subject
包含單引號。 這意味着您必須逃脫它們。 (有關此問題,請參見無數其他答案和mysql_real_escape_string()
。)但是正如您所看到的,變量內的單引號正是注入攻擊的工作方式。 轉義它們有助於防止此類問題,並允許您的查詢存儲期望的數據。
如果不參考Bobby Tables,關於注入式攻擊的答案是不完整的。
轉義您的參數。
$to = mysql_real_escape_string($to);
$subject = mysql_real_escape_string($subject);
mysql_query("INSERT INTO table (to_email_id, subject) values('$to', '$subject');");
手冊: mysql_real_escape_string()
另外,請閱讀有關SQL注入攻擊的信息 。
您的查詢將返回1064錯誤,這是查詢中的語法錯誤。 之所以發生這種情況,是因為變量(特別是在問題中為$ subject)正在更改封閉字符串的格式。 例如,假設我們有
$subject = "fire's hotter than it looks";
在查詢中評估此值后,您的查詢字符串將為
INSERT INTO table (to_email_id,subject)
VALUES('the value of the to variable','fire's hotter than it looks');
如果您看一下值中的第二個項目,它曾經是$ subject,那么您會注意到現在撇號的數量是不均勻的,這意味着查詢的結尾');。 是一個開放的字符串。
如上所述,請使用mysql_real_escape_string()之類的函數添加缺少的斜杠。
快速說明:在諸如“和'(\\”,\\')之類的字符上添加斜杠。 告訴mysql將它們解釋為字符串字符,而不是查詢字符串定界符。
您需要在$to
和$subject
值上使用mysql_real_escape_string()
另外,如果您在進行sql注入之前未進行此操作
您的查詢有一個很大的“漏洞”-> SQL注入。 您應該在這里閱讀更多有關此的信息: http : //en.wikipedia.org/wiki/SQL_injection以及http://php.net/manual/en/function.mysql-real-escape-string.php
要簡短回答,您必須“轉義”傳遞給mysql的值。 最好的方法是使用mysql_real_escape_string函數。
$query = sprintf("mysql_query("INSERT INTO table (to_email_id,subject) values('%s', '%s');", mysql_real_escape_string($to),mysql_real_escape_string($subject));
mysql_query($query);
我希望這能幫到您。
如果您正在使用
(所有書籍都可用)作為$ subject,並且您嘗試插入mysql
用這個
$disc_str = addslashes($subject);
“插入表名稱(主題)值('$ disc_str')”;
它也與tinymce在Textarea中對我有效
解決方法很簡單。 在將數據存儲到 php 變量之前,只需添加以下方法
$connection = mysqli_connect($host,$dbuser,$dbpass,$dbname);
$to= mysqli_real_escape_string($connection, $old_email);
$subject= mysqli_real_escape_string($connection, $old_subject)
$query = "INSERT INTO table (to_email_id,subject) values('$to','$subject');";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.