Wpdb->准备函数在SQL语句中删除%s的单引号

时间:2013-01-08 作者:user1609391

我正在sql语句中使用下面的wpdb->prepare函数。我传入了几个变量,一些字段名和一些值。当我尝试使用%s作为字段名时,它会在其周围加上单引号。如何防止字段名周围出现单引号?sql语句将不会使用单引号执行?

$query = $wpdb->prepare("SELECT DISTINCT wp_geo.%s, wp_geo.$field2 FROM wp_geo WHERE wp_geo.$field3=%s",$field1, $typevalue);

“county\\u short”字段名周围带单引号的输出:

SELECT DISTINCT wp_geo.\'county_short\', wp_geo.county_slug FROM wp_geo WHERE wp_geo.type=\'trailers\'

3 个回复
最合适的回答,由SO网友:fuxia 整理而成

不能在$wpdb中抑制引号。跑mysqli_real_escape_string() 在这些变量的脚本中。

SO网友:webaware

不能对列名使用prepare(),只能对值使用prepare()。

SO网友:Malav Vasita

您可以使用排除单引号包装的%1s。通过使用%1s,您将注意到字符串不会有单引号,您将根据需要直接获取值。

$query = $wpdb->prepare("
              SELECT DISTINCT wp_geo.%1s, wp_geo.%1s
              FROM wp_geo
              WHERE wp_geo.%1s = %1s",
              $field1, 
              $field2, 
              $field3, 
              $typevalue
         );
Note: 这里,应遵循%1s的顺序以及查询后提供的变量。

结束

相关推荐

如何在不使用本地开发的搜索和替换脚本的情况下从生产站点执行MySQL转储?

我对WordPress生产数据库执行了MySQL转储,以导入到本地开发环境中。我计划经常执行此数据库转储和导入。我是否可以避免运行搜索&;替换更新所有永久链接、站点URL等的脚本或MySQL查询?我可以在我的wp配置中包括以下内容吗。php覆盖上述链接:define(\'WP_HOME\', \'http://localhost.com:8888/example\'); define(\'WP_SITEURL\', \'http://localhost:8888/example\');