无法找到“mysql_query()的错误参数计数”的原因

时间:2012-09-19 11:47:11

标签: php mysql wordpress

我正在尝试整合一个插件脚本,该脚本从各个位置获取一系列值,包括csv和字符串,以更新我的数据库中的现有行。它的目的是为了更新WP电子商务的价格,当你开始只是一个sku和新的价格。第一个查询从db中检索我需要的附加信息,字符串以正确的顺序放置数据。

我已经准备好导入的字符串中的值了。但我一直在标题中得到错误:“mysql_query()的错误参数计数”。谁能帮我吗?我在这里做过一些根本错误的事吗?

$result = mysql_query("SELECT * FROM `wp_postmeta` WHERE `post_id` = (SELECT `post_id` FROM `wp_postmeta` WHERE `meta_value` = '$var') AND `meta_key` = '_wpsc_price'") or die(mysql_error()); 

while ($row = mysql_fetch_array($result))
{
    //Collates all the info for the line of data we need...
    $my_string = ($row['meta_id'].$row['post_id'].$row['meta_key'].$data[$index-1]);
    global $wpdb; 

$update = mysql_query("REPLACE TABLE 'wp_postmeta' VALUES ($my_string)",
        mysql_real_escape_string($meta_id), 
        mysql_real_escape_string($post_id), 
        mysql_real_escape_string($meta_key),
        mysql_real_escape_string($meta_value)); 
}

3 个答案:

答案 0 :(得分:0)

不推荐使用mysql扩展程序,强烈建议不要使用它。此外,mysql_query()不接受查询占位符 ,它只接受一个或两个参数 - 查询字符串和可选的连接句柄。 另外,你在$my_string中构建了一个非常奇怪的值,然后你只需要转储到你的查询字符串中。我很难想象你想要实现的目标。

答案 1 :(得分:0)

PHP's mysql_query期待一个或两个参数。你想做的是像

$queryString = sprintf("REPLACE TABLE 'wp_postmeta' VALUES %s, %s, %s, %s",
    mysql_real_escape_string($meta_id), 
    mysql_real_escape_string($post_id), 
    mysql_real_escape_string($meta_key),
    mysql_real_escape_string($meta_value));
$update = mysql_query($queryString);

该代码未经测试 - 只是为了让您了解一般的想法。

答案 2 :(得分:0)

所以你的查询确实如此

update 'wp_postmeta' set datafield = \"".$data[$index-1]."\"
where meta_id=\"".$row['meta_id']."\" 
and post_id=\"".$row['post_id']."\"

将数据字段的名称更改为应该是