Php 找不到“mysql\u query()的参数计数错误”的原因

Php 找不到“mysql\u query()的参数计数错误”的原因,php,mysql,wordpress,Php,Mysql,Wordpress,我正在尝试组合一个插件脚本,它从包括csv在内的不同位置获取一系列值,并将它们串在一起以更新数据库中的现有行。它的目的是更新可湿性粉剂电子商务的价格,当你开始只是一个sku和新的价格。第一个查询从数据库中检索我需要的其他信息,字符串将数据按正确的顺序排列 我已经准备好导入字符串中的值。但我一直在标题中看到错误:mysql\u查询的参数计数错误。有人能帮我吗?我在这里做错什么了吗 $result = mysql_query("SELECT * FROM `wp_postmeta` WHERE `p

我正在尝试组合一个插件脚本,它从包括csv在内的不同位置获取一系列值,并将它们串在一起以更新数据库中的现有行。它的目的是更新可湿性粉剂电子商务的价格,当你开始只是一个sku和新的价格。第一个查询从数据库中检索我需要的其他信息,字符串将数据按正确的顺序排列

我已经准备好导入字符串中的值。但我一直在标题中看到错误:mysql\u查询的参数计数错误。有人能帮我吗?我在这里做错什么了吗

$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)); 
}
mysql扩展已被弃用,强烈反对使用它。此外,mysql_查询根本不接受查询占位符,它只接受一个或两个参数-查询字符串和可选的连接句柄。此外,您正在$my_字符串中构建一个非常奇怪的值,然后将其转储到查询字符串中。我甚至很难想象你正试图通过它来实现什么。

期待一个或两个参数。你想做的是

$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);

这段代码未经测试-只是为了让您了解大致情况。

所以您的查询实际上是正确的

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

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

可能需要一份完整的代码副本,以确保所有的大括号和行都对齐。我有我需要的数据,通过echo测试。我只需要它进入数据库。你能告诉我们$update的回声显示了什么吗?我不能回声$update而不得到同样的错误。对不起,我指的是为进行$update而生成的查询-例如拉出查询并回声确认,然后我们可以播放查找缺少的内容我希望字符串中的数据进入数据库。评估查询的结果。我很确定这不是用于更新wp_Posteta表的有效SQL。请尝试更新wp_Posteta设置元\u id='%1s',元\u id='%2s',元\u键='%3s',元\u值='%4s',其中元\u id='%1s',谢谢。如果上述解决方案失败,我们将试一试。我想我是走错了路。我的天啊,我快要发疯了。我已经为这个插件工作了一周,这个插件已经工作了24小时。上面的代码就是解决方案——除了使用“而不是”来定义db表和列之外。美丽的这是一个更优雅的解决方案。谢谢你的寻欢作乐!同样感谢Spontifixus提供的信息:我想你或多或少也在考虑同样的问题。是的,mysql查询的内容被贬低了,但同时意味着你的代码将在更多版本上运行。。这样做对吗?耸肩我尽量不去评判那样的事情,通常会被人骂。。所以,如果它现在很开心-请标记为我知道的答案,但假设我仍然使用我所有的东西的当前版本,那么这种反对不会影响我-我的网络主机一直在为yonks使用相同的版本,并且拒绝更新,一旦我部署了它,我不打算更新任何网站。再次感谢你的帮助。如何标记为已回答?