Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保护wordpress-如何使用wodb->;prepare()函数_Php_Wordpress_Function_Sql Injection - Fatal编程技术网

Php 保护wordpress-如何使用wodb->;prepare()函数

Php 保护wordpress-如何使用wodb->;prepare()函数,php,wordpress,function,sql-injection,Php,Wordpress,Function,Sql Injection,我用$wpdb->prepare设置了下面的sql。当前,此查询在函数中运行,所有变量都从wordpress中的my page.php文件传递给函数。下面的查询有效。然而,我的问题是,我是否需要对$field1、prepare(“选择不同的wp\u eva\u地理区域。$field1,wp\u eva\u地理区域。$field2 来自wp_eva_geography 其中wp_eva_geography.$field3=%s和wp_eva_geography.$field4=%s“,$type,

我用
$wpdb->prepare
设置了下面的sql。当前,此查询在函数中运行,所有变量都从wordpress中的my page.php文件传递给函数。下面的查询有效。然而,我的问题是,我是否需要对
$field1、
等变量使用
%s
。。。如果有人能帮助我如何设置它,当我尝试时它不起作用。如果没有,有人能告诉我为什么没有吗?谢谢大家!

$query=$wpdb->prepare(“选择不同的wp\u eva\u地理区域。$field1,wp\u eva\u地理区域。$field2
来自wp_eva_geography
其中wp_eva_geography.$field3=%s和wp_eva_geography.$field4=%s“,$type,$geo_no_dash);
$results=$wpdb->get_results($query)


使用参考文档了解其工作原理

在您的特定情况下,只需回显MySQL查询字符串,您就可以看到它实际试图请求什么。然后,您可以发现是否出现了错误,例如错误的列名或值条目


谢谢你提出的回复我的sql的建议。我发现它是这样的:
选择不同的wp\u eva\u geography.'country\u short',wp\u eva\u geography.country\u slug
因此,当我将%s作为字段名时,它会添加开始和结束的单引号。有没有办法防止单引号?就个人而言,我不会将列名作为变量,我宁愿在实际查询中看到它们,否则请求的作用就不太清楚了。根据我的经验,我只将值传递到SQL查询中。
$query = $wpdb->prepare("SELECT DISTINCT wp_eva_geography.$field1, wp_eva_geography.$field2 
FROM wp_eva_geography
WHERE wp_eva_geography.$field3=%s AND wp_eva_geography.$field4=%s",$type,$geo_no_dash);
$results = $wpdb->get_results( $query );

$wpdb->query( 
    $wpdb->prepare( 
        "DELETE FROM $wpdb->postmeta
         WHERE post_id = %d
          AND meta_key = %s",
         13, 'gargle' 
    )
);