在 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中文网其他相关文章!