Mysql 插入到自定义表时是否仍应转义数据?

Mysql 插入到自定义表时是否仍应转义数据?,mysql,wordpress,pdo,sanitization,Mysql,Wordpress,Pdo,Sanitization,我找到了一个答案,但它并没有给我想要的答案。解释WordPress使用的最重要的卫生功能 我使用PDO将表单数据存储到自定义表中。很多数据都包含像l'this和Cotélac&Blancé这样的名称 如果我把电子邮件和url字段放在一边,那么使用esc_attr和esc_html来避免SQL注入和跨站点脚本编写就足够了吗 我应该在数据保存到数据库之前使用它吗?还是在我把它放到屏幕上之前 //From Wordpress esc_html -> Escaping for HTML block

我找到了一个答案,但它并没有给我想要的答案。解释WordPress使用的最重要的卫生功能

我使用PDO将表单数据存储到自定义表中。很多数据都包含像
l'this
Cotélac&Blancé
这样的名称

如果我把电子邮件和url字段放在一边,那么使用
esc_attr
esc_html
来避免SQL注入和跨站点脚本编写就足够了吗

我应该在数据保存到数据库之前使用它吗?还是在我把它放到屏幕上之前

//From Wordpress
esc_html -> Escaping for HTML blocks
esc_attr -> Encodes the <, >, &, " and '
既然您已经标记了,我可以补充一点,就是有一个可以处理所有这些问题的

是的,你应该用它来帮助你

从法典的示例中:

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

取决于你如何使用PDO@YourCommonSense我用查询示例更新了问题,你们可能想读一下:是的,我知道。不幸的是,我在开始工作2年后就想到了这一点(我对WP有了更多的了解)。所以现在有几千行SQL查询。另一方面,如果需要/时间到来,不使用
$wpdb
可以让我更轻松地将代码移植到不同的系统上。即使我使用的是
$wpdb
,我仍然应该漏掉一些数据?如果您使用的是
$wpdb
,则
prepare
方法将为您提供必要的帮助。如果您不确定是否可以硬编码一些值,并尝试将其添加到wordpress数据库中,只需查看$wpdb类的工作方式是否符合您的预期即可。但是,假设我还没有计划使用
$wpdb
,你会如何解决我上面的问题?斯坦给了你一个链接,其中详细讨论了这个主题:
$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO $wpdb->postmeta
        ( post_id, meta_key, meta_value )
        VALUES ( %d, %s, %s )
    ", 
        10, 
    $metakey, 
    $metavalue 
) );