插入MySQL时转义PHP中的单引号问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (439)

我有两条sql语句:第一条将表单中的信息输入数据库。-第二条从上面输入的数据库获取数据,发送电子邮件,然后记录事务的详细信息。

问题是,第一个实例可以不发出任何问题,但是第二个实例将触发mysql_error().

来自表单的数据是否与在表单中捕获的数据处理方式不同?

查询#1-这没有问题(也不转义单引号)

$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 
('$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')");

查询2-当输入带有单引号的名称(即O‘Brien)时,这将失败。

$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')");
提问于
用户回答回答于
用户回答回答于

这个扩展在PHP5.5.0中不再被推荐使用,以后将被删除。相反,MySQLi或PDO_应该使用MySQL扩展。

这一函数的替代办法包括:

mysqli_real_escape_string()

PDO::quote()

扫码关注云+社区

领取腾讯云代金券