web-dev-qa-db-ja.com

WSoDはこのコードによって引き起こされている

これは私が書いている関数で、他の情報とともに入力をデータベースに投稿することになっています。現時点では、プラグインをアクティブにするとWSoDが生成されます。機能が削除されると、意図したとおりに残りのプラグイン関数が削除されます。

これが入力です。

 <input type="text" maxlength="4" name="' . $quanid . '" value="" class="input" />
            <button class="submit" type="submit" value="Submit">Submit</button>

$ quanidはCSVファイルから来ています。

   while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

      $quanid = $data[2];

add_action('login_head','ref_access');

function ref_access(){
global $error;

if (is_user_logged_in())
$newdb = new wpdb( 'user', 'pass', 'db', 'localhost' );
global $newdb;
$hf_username = wp_get_current_user();
$inputValue = $_POST[$quanid];
$wpdb->insert( 
$table, 
array( 
    'ItemID' => $quanid
    'Price' => $inputValue
    'user' => $hf_username
), 
);

{

}else {
     $error = "Error: You must be logged in to submit prices";
     return ; 
     }
}
1
Kreation

少なくとも、コードのフォーマットや構文に問題があります。

function ref_access(){
global $error;

if (is_user_logged_in()) // <-- problem here...
$newdb = new wpdb( 'user', 'pass', 'db', 'localhost' );
global $newdb;
$hf_username = wp_get_current_user();
$inputValue = $_POST[$quanid];
$wpdb->insert( 
$table, 
array( 
    'ItemID' => $quanid
    'Price' => $inputValue
    'user' => $hf_username
), 
);

{ // <-- problem here...

}else {
     $error = "Error: You must be logged in to submit prices";
     return ; 
     }
}

正しくフォーマットされています:

function ref_access(){

    global $error;

    if ( is_user_logged_in() ) {

        global $newdb;

        //you are not using $newdb anywhere in this functions
        $newdb = new wpdb( 'user', 'pass', 'db', 'localhost' );

        $hf_username = wp_get_current_user();
        $inputValue  = $_POST[$quanid];

        //you need to delcare global $wpdb here if you plan to use $wpdb instead of $newdb
        $wpdb->insert( 
            $table, //there is no $table variable within this function
            array( 
                'ItemID' => $quanid
                'Price'  => $inputValue
                'user'   => $hf_username
            )
        );

    } else {
         $error = "Error: You must be logged in to submit prices";
         return; 
    }

}

更新:

$tableが別の関数で定義されているというあなたのコメントに関しては、次に、値$tableを関数呼び出しref_action('my_table_name')に渡す必要があります。

例:

function ref_access($table = '') {
  //function code
}

//Usage

ref_access('my_table_name');
1
userabuser