배경:
MySQL 쿼리에는 특수 문자가 포함될 수 있는 문자열을 사용하는 작업이 포함됩니다. 작은 따옴표와 같은. MySQL이 쿼리의 일부로 특수 문자를 잘못 해석하는 것을 방지하려면 이러한 특수 문자를 이스케이프해야 합니다.
문제:
개발자가 MySQL 데이터베이스에 데이터를 삽입할 때 문제가 발생합니다. 작은 따옴표로 인해 실패하면 MySQL 오류가 발생합니다. 이 문제는 데이터베이스에서 데이터를 검색하여 이메일 템플릿에 사용하는 두 번째 쿼리에서 발생합니다.
원인 및 해결 방법:
원인은 적절한 쿼리가 부족하기 때문입니다. MySQL에 데이터를 삽입할 때 이스케이프 처리됩니다. 두 번째 쿼리는 데이터베이스에서 작은따옴표가 포함될 수 있는 데이터를 검색합니다. 이러한 작은따옴표는 이메일 템플릿에서 사용될 때 이스케이프되지 않으며 이로 인해 MySQL 오류가 발생합니다.
이 문제를 해결하려면 MySQL에 삽입하기 전에 mysql_real_escape_string()을 사용하여 모든 문자열을 이스케이프하세요. 이 함수는 작은따옴표를 포함한 특수 문자를 이스케이프합니다. 이 기능을 사용하면 데이터에 작은따옴표가 있는지 여부에 관계없이 두 쿼리가 모두 올바르게 작동합니다.
<code class="php">$escaped_order_id = mysql_real_escape_string($order_id); $escaped_message_content = mysql_real_escape_string($message_content); $result = mysql_query("INSERT INTO job_log (order_id, supplier_id, category_id, service_id, qty_ordered, customer_id, user_id, salesperson_ref, booking_ref, booking_name, address, suburb, postcode, state_id, region_id, email, phone, phone2, mobile, delivery_date, stock_taken, special_instructions, cost_price, cost_price_gst, sell_price, sell_price_gst, ext_sell_price, retail_customer, created, modified, log_status_id) VALUES ('$escaped_order_id', '$supplier_id', '$category_id', '{$value['id']}', '{$value['qty']}', '$customer_id', '$user_id', '$salesperson_ref', '$booking_ref', '$booking_name', '$address', '$suburb', '$postcode', '$state_id', '$region_id', '$email', '$phone', '$phone2', '$mobile', STR_TO_DATE('$delivery_date', '%d/%m/%Y'), '$stock_taken', '$special_instructions', '$cost_price', '$cost_price_gst', '$sell_price', '$sell_price_gst', '$ext_sell_price', '$retail_customer', '".date('Y-m-d H:i:s', time())."', '".date('Y-m-d H:i:s', time())."', '1')"); $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 ('$escaped_order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', '$row->supplier_id', '$row->primary_email' ,'$row->secondary_email', '$subject', '$escaped_message_content', '1')");</code>
위 내용은 PHP에서 작은따옴표가 포함된 데이터를 삽입할 때 MySQL 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!