我找到了similar question,但它并没有真正给我我想要的答案。 This tutorial解释了WordPress使用的最重要的卫生功能。
我正在使用PDO将表单数据存储到自定义表中。许多此类数据包含l'this
和Cotélac & Blancé
等名称。
如果我放弃电子邮件和网址字段,使用esc_attr
和esc_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;
答案 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
) );