2017-09-17 3 views
0

[balance]テーブル内の[share]テーブルとupdateステートメントに文を挿入しようとしていますが、残高がbalanceテーブルの75より大きいか等しい場合、WordPressデータベースの値に基づいてステートメントを挿入

<?php 
if (isset($_POST['submit'])) { 
    $site = htmlspecialchars($_POST['site']); 
    $me=$current_user->user_login; 
    $today = date('Y-m-d'); 
    $me=$current_user->user_login; 
    $table_balance = $wpdb->prefix . "balance"; 
    $result = $wpdb->get_results(
     "SELECT Balance FROM $table_balance WHERE User= '$me'" 
    ); 

    if ($result && mysql_num_rows($result)>=75) { 
     $random = uniqid(); 
     $table_share = $wpdb->prefix . "share"; 
     $wpdb->insert($table_share, array(
      'id' => $random, 
      'purchasedate' => $today, 
      'purchasevalue' => 75, 
      'offervalue' => 0, 
      'status' => Active, 
      'user' => $me, 
      'monthlyearnings' => 2, 
     )); 

     $sum=75; 
     $table_balance = $wpdb->prefix . "balance"; 
     $wpdb->update(
      "$table_balance SET Balance=Balance-$sum WHERE User = '$me'" 
     ); 
     echo "Purchased made successfully"; 
     exit(); 
    } else { 
     echo "sorry!you dont have required amount.pls add required amount"; 
    } 
?> 

答えて

1

あなたは、クエリによって返される行の数を返しmysql_num_rows()、データベースの値をチェックするため、間違った機能を使用している:私のコードで次のステートメントは常に、それは必要な条件を満たしているにもかかわらず、balance>=75

、この場合はおそらく1であり、75より小さい。else常に実行される。あなたがfetch_rowを使用する必要がバランスを得るために

、このような何か:

if ($result && ($row = $result->fetch_row()) && $row[0]>=75) 

編集:私はあなたが標準mysqli_stmt::get_resultを使用して使用するものを入れていますが、wpdb::get_resultsを使用しているので、代わりにあなたが持っています

if ($result && $result[0]->Balance>=75) 
+0

ハイテクthnksを今、それは致命的なエラーを与えている:使用するしかし、私は(「SEL $結果= $ wpdb->」以下get_varのようにクエリを変更した、アレイ上のメンバ関数FETCH_ROW()の呼び出しECTバランスFROM $ table_balance WHERE User = '$ me' "); – Mithu

+1

私の悪いところは、標準の 'mysqli_stmt :: get_result()'を使って結果を得る方法を入れましたが、 'wpdb() 'を使っています。 :: get_results() 'とは異なります。とにかく 'wpdb :: get_var()'はこの場合、単一行のvaleだけを取得したいからです。 –

関連する問題