关于$wpdb->Prepare()的问题

时间:2015-03-29 作者:Foysal

$wpdb->prepare()正在添加单引号(“”),如下所示。

我正在使用以下代码

$sql = $wpdb->prepare("SELECT * FROM %s ",$table_name);
echo $sql;
我得到如下输出

SELECT * FROM \'wp_nametbl\'
但我想得到如下输出

SELECT * FROM wp_nametbl

1 个回复
SO网友:websupporter

prepare()用于转义WHERE语句中的值。通常预计表格选择是“硬编码”的。如果不能使用例如$wpdb->posts或其他“表格”函数,可以将允许的表格列入白名单,并检查$table\\U name是否在此白名单上:

<?php
    $allowed_tables = array( $wpdb->prefix . \'nametbl\', $wpdb->prefix . \'nametbl2\' );
    if( ! in_array( $table_name, $allowed_tables ) )
        wp_die( \'Wrong input.\' );

    $sql = "SELECT * FROM " . $table_name;
?>

结束

相关推荐

$wpdb->Get_Results内存泄漏

我开发了一个wordpress插件,可以读取大型自定义xml文件,并将信息作为自定义帖子类型和大量帖子元信息导入。所以我调用了很多数据库事务。插件在一个POST\'ed进程内运行几分钟,然后在内存不足(250 MB)的情况下中止。将问题跟踪到最低限度我有一个显示问题的最低限度的示例。这个例子泄漏了大约18 kbyte的数据,这在插件运行时是一个很大的总结。查询检查是否存在具有给定标题的帖子($title)echo \"<p>memory: \" . memory_get_usage() . \