2016-08-24 65 views
0

我試圖調試一個表更新,並努力爲下一個想法。我從XML中提取值並嘗試用它們更新列(在ID上匹配的行)。PHP無法更新MySQL,但報告成功 - 在phpmyadmin中工作

if ($r2 != false) 

達到提示它不會失敗,但沒有數據更新。如果我在phpmyadmin中運行相同的查詢,它將更新沒有問題。在每次更新之前(因爲這個問題)我查詢db &成功找到該行。我也試過明確鑄造XML結果(浮動)的列是小數,但下面沒有運氣:(較大的代碼示例:

$home_lay = 99.99; 
    $draw_lay = 99.99; 
    $away_lay = 99.99; 
    if(count($home) > 0) { 
     $home_lay = $home[0]["decimal"]; 
    } 
    if(count($draw) > 0) { 
     $draw_lay = $draw[0]["decimal"]; 
    } 
    if(count($away) > 0) { 
     $away_lay = $away[0]["decimal"]; 
    } 
    $q3 = "SELECT * FROM tab4 where match_id = " . $matchid; 
     $r3 = mysqli_query($dbc, $q); 

     if (mysqli_num_rows($r3) > 0) { 
      echo 'THIS ROW EXISTS <br />'; 
     } else { 
      echo 'NO ROW!!!! <br />'; 
     } 

    $q2 = 'update tab4 set smark_home = '.$home_lay. ' , smark_draw ='. $draw_lay .' , smark_away ='. $away_lay .' 
       where match_id='. $matchid; 
    $r2 = mysqli_query($dbc, $q); 
     if ($r2 != false) { 
      echo "Odds updated <br />"; 

我在它呼應了去(從切代碼)與像輸出以下內容:

匹配ID:755094
家:3.90
抽獎:3.50
遠:2.38
此行存在
更新TAB4集smark_h青梅= 3.90,smark_draw = 3.50,smark_away = 2.38,其中match_id = 755094

編輯:繼現在刪除評論我只是試着做一份準備好的聲明這個正確答案例如:PHP UPDATE prepared statement與「dddi」,但仍然沒有錯誤或更新

+0

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en /mysqli.quickstart.prepared-statements.php)和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這會非常有害。 – tadman

+0

將'mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);'添加到yuor腳本的頂部。這將強制任何'mysqli_'錯誤到 生成一個你不能錯過或忽略的異常。 – RiggsFolly

+0

UPDATE文本值中是否有這些列? – RiggsFolly

回答

0

FML。

$q2 = "update"; 
$r2 = mysqli_query($dbc, $q); // not $q2! 

該死的。感謝您的建議,我現在將使用準備好的語句,假設它將工作

相關問題