无法保存 MySQL 查询 [重复]
Posted
技术标签:
【中文标题】无法保存 MySQL 查询 [重复]【英文标题】:Can't Save MySQL Query [duplicate] 【发布时间】:2015-11-30 07:05:06 【问题描述】:我的 mysql 查询/php 出现问题,我尝试更新我的数据库中通常可以工作的行,但是当字符串中包含 '
时,例如
我不喜欢
'
t 喜欢绿鸡蛋和火腿。
其中的'
将取消整个响应并且不更新行,所以如果我在没有'
的情况下放置这样的内容,例如:
我不喜欢青鸡蛋和火腿。
字符串将保存到行中。下面是使用的 MySQL 查询以及我从哪里获取字符串。
$NewMessage = $_POST['message123'];
mysql_query("UPDATE Account SET `function` = 'Message', `note` = '$NewMessage' WHERE `id` = '$ID' AND `Online` = '1'");
如果您需要更多资源或任何东西,请告诉我,让我知道您的想法,谢谢!
【问题讨论】:
mysql_real_escape_string
最好使用准备好的语句。
在变量前使用 mysql_real_escape_string
STOP 使用已弃用的 mysql_*
API。将 mysqli_*
或 PDO
与准备好的语句一起使用。
@AbhikChakraborty 哇,忘了这一切,感谢它 100% 有效,有时最小的事情会滑倒我!
@Jens 将在几天后开始使用它,这只是为了测试,谢谢!
【参考方案1】:
只需使用addslashes()
了解更多信息click here
例如,在您的代码中只需使用 addslashes()
之类的东西
$NewMessage = addslashes($_POST['message123']);
我希望它对你有用。
【讨论】:
【参考方案2】:嗨,朋友,您需要将单个 ' 与 '' 逗号更改 2 次。然后在表中插入正确的值,其他生成错误。
真正的转义字符串在我们需要像这个点这样的值的地方使用。如果我们在数据库中使用它的值,那么正确的是使用 '' 2 time single commas no doule commas
【讨论】:
【参考方案3】:使用*_real_escape_string
$NewMessage = mysql_real_escape_string($_POST["message123"]);
当然,mysql_*
API 已经是deprecated,我建议您改用prepared statement。
【讨论】:
很快就会使用PDO
,这只是为了测试,谢谢!以上是关于无法保存 MySQL 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章