插入自定义表时,我还应该转义数据吗?

时间:2013-03-27 14:02:06

标签: mysql wordpress pdo sanitization

我找到了similar question,但它并没有真正给我我想要的答案。 This tutorial解释了WordPress使用的最重要的卫生功能。

我正在使用PDO将表单数据存储到自定义表中。许多此类数据包含l'thisCotélac & Blancé等名称。

如果我放弃电子邮件和网址字段,使用esc_attresc_html来进行SQL注入和跨网站脚本编写是否足够?

我应该在将数据保存到数据库之前使用它吗?或者就在我把它放到屏幕之前?

//From Wordpress
esc_html -> Escaping for HTML blocks
esc_attr -> Encodes the <, >, &, " and '

这是我使用的典型查询:

$sql = " SELECT name
         FROM name
         WHERE user_name = :user_name
         AND fk_ID = :some_id ";

$stmt = $this->db->prepare($sql);
$stmt->bindParam(':user_name', $name, PDO::PARAM_STR);
$stmt->bindParam(':some_id', $some_id, PDO::PARAM_STR);
$stmt->execute();

$result = $stmt->fetchAll();
return $result;

// alternative (from another query)
$stmt = $this->db->prepare($sql);
$stmt->execute(array(':id'=> $id));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

return $result;

1 个答案:

答案 0 :(得分:1)

由于您已标记wordpress,我可能会补充说,$wpdb class可以处理所有这些内容。

是的,您应该使用$wpdb->prepare来帮助您。

从食典委的例子来看:

$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO $wpdb->postmeta
        ( post_id, meta_key, meta_value )
        VALUES ( %d, %s, %s )
    ", 
        10, 
    $metakey, 
    $metavalue 
) );