Wordpress表单提交空白值的PHP代码

时间:2015-03-22 22:22:19

标签: php mysql wordpress

此代码应检查用户是否在发布输入时登录,如果是,则检查ItemID和用户ID是否已在表中有条目,如果是,则更新该条目而不是创建副本。

这是我需要的输出:

+--------+-------+----------+
| ItemID | Price | user     |
+--------+-------+----------+
| 1      | 20    | 27       |
+--------+-------+----------+

这就是我得到的:

+--------+-------+----------+
| ItemID | Price | user     |
+--------+-------+----------+
| 0      | 0     | 27       |
+--------+-------+----------+

如果需要,这是完整的功能:http://pastebin.com/W0UM68UT

if ( is_user_logged_in() ) {

    $hf_user = get_current_user_id();
    $hf_username = $hf_user->user_login;
    global $quanid;
    $inputValue  = isset($_POST[$quanid]);
    global $newdb;
    $newdb = new wpdb( 'user', 'pass', 'db', 'localhost' );
    $retval = $newdb->get_results("SELECT * FROM $table WHERE ItemID = '$quanid' AND user = '$hf_username' ");

if($retval > 0) 
{  
    //If user exists, update
    $newdb->replace($table,array(
    'ItemID' => '$quanid',
    'Price' => $inputValue,
    'user' => $hf_username
        )
    ); 
}
else
{
        global $table;
        global $newdb;
        $newdb->insert( 
            $table,
            array( 
                'ItemID' => $quanid,
                'Price'  => $inputValue,
                'user'   => $hf_username
            )
        );
}



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


}

1 个答案:

答案 0 :(得分:1)

不要使用全局 ...

  

How to avoid using PHP global objects?

将SELECT语句更改为计数以获得更好的性能:

SELECT count( 1 ) FROM $table WHERE ItemID = '$quanid' AND user = '$hf_username'

关于你的问题:

您的global $quanid;isset($_POST[$quanid]);似乎会返回意外值,因此您应该看到它们的设置位置。尝试使用:

var_dump就在这两行的正下方:

global $quanid;
$inputValue  = isset($_POST[$quanid]);
var_dump( $quanid );
var_dump( $inputValue  );
var_dump( $_POST);
die;