首页 >后端开发 >php教程 >如何防止PHP中单引号引起的MySQL错误?

如何防止PHP中单引号引起的MySQL错误?

Patricia Arquette
Patricia Arquette原创
2024-11-02 21:07:02333浏览

How to Prevent MySQL Errors Caused by Single Quotes in PHP?

在 MySQL 的 PHP 中转义单引号

您遇到了将数据插入时单引号导致 MySQL 错误的问题一个数据库。当数据在插入之前未正确转义时,就会出现此问题。

在第一个查询中,不需要转义,因为您是直接从表单插入数据。但是,第二个查询从先前插入的记录中检索数据并尝试将其插入到新表中。由于数据可能包含未转义的单引号,因此会触发 MySQL 错误。

为了防止此错误,您可以使用 mysql_real_escape_string() 函数在将所有字符串插入数据库之前对它们进行转义。此函数将单引号等特殊字符转换为其转义的等效字符,防止它们导致错误。

例如,在查询 2 中,将以下行替换:

<code class="php">$query = mysql_query("INSERT INTO message_log
(order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status)
VALUES
('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', '$row->supplier_id', '$row->primary_email' ,'$row->secondary_email', '$subject', '$message_content', '1')");</code>

替换为:

<code class="php">$query = mysql_query("INSERT INTO message_log
(order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status)
VALUES
('$order_id', '".mysql_real_escape_string(date('Y-m-d H:i:s', time()))."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($from)."', '$row->supplier_id', '".mysql_real_escape_string($row->primary_email)."', '".mysql_real_escape_string($row->secondary_email)."', '".mysql_real_escape_string($subject)."', '".mysql_real_escape_string($message_content)."', '1')");</code>

通过这种方式对所有字符串进行转义,可以防止单引号导致MySQL错误,保证数据插入正确。

以上是如何防止PHP中单引号引起的MySQL错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn