1

csvを含むさまざまな場所からさまざまな値を取得し、それらを文字列化してデータベース内の既存の行を更新するプラグインスクリプトをまとめようとしています。単品管理と新しい価格から始めると、WPEコマースの価格を更新するように設計されています。最初のクエリは、データベースから必要な追加情報を取得し、文字列はデータを正しい順序に並べます。

文字列内の値をインポートする準備ができました。しかし、タイトルに「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)); 
}
4

3 に答える 3

0

このmysql拡張機能は非推奨であり、その使用は強くお勧めしません。さらに、mysql_query()クエリプレースホルダーをまったく受け入れず、1つまたは2つのパラメーター(クエリ文字列とオプションの接続ハンドル)のみを受け入れます。さらに、非常に奇妙な値を作成し$my_stringているので、クエリ文字列にダンプするだけです。それによってあなたが何を成し遂げようとしているのか想像さえできません。

于 2012-09-19T11:53:28.057 に答える
0

PHPのmysql_queryは、1つまたは2つのパラメーターを予期しています。あなたがしたいことは次のようなものです

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

そのコードはテストされていません-ちょうどあなたが一般的な考えを得るように。

于 2012-09-19T11:56:31.703 に答える
0

だから本当にあなたのクエリは行きます

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

データフィールドの名前を変更する

于 2012-09-19T12:41:25.753 に答える