无法保存 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 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Left join 无法在单个查询中删除重复项

无法在 MySQL 查询中将字符串转换为日期时间

MySQL GROUP_CONCAT 返回重复值。无法使用 DISTINCT

无法在 MySQL 语法错误中运行查询意外

sql限制无法显示第一行[重复]

SQL查询INSERT无法将值插入我的数据库[重复]