2017-07-29 57 views
-3

我需要從PHP更新數據庫記錄。MySQL UPDATE在phpMyAdmin中工作,但不在PHP中

這裏是我的PHP代碼:

if(isset($_FILES["fileEdit"])){ 
    if($_FILES["fileEdit"]["error"] == 0){ 

     $id = $_POST["id"]; 
     $productName = $_POST["name"]; 
     $productDesc = $_POST["desc"]; 
     $productPrice = $_POST["price"]; 
     $productPath = "images/" . $_FILES["fileEdit"]["name"]; 

     move_uploaded_file($_FILES["fileEdit"]["tmp_name"], $path . $_FILES["fileEdit"]["name"]); 

     $sql = "UPDATE products SET name='$productName', description='$productDesc', price='$productPrice' img_src='$productPath' WHERE id='$id'"; 

     $result = $dbCon->query($sql); 

     echo "edit--> " . $_FILES["fileEdit"]["name"] . " -> no errors, " . $productName . " desc: " . $productDesc . " price: " . $productPrice . "id: ".$id; 
    }else{ 
     echo $_POST["name"]." -> error"; 
    } 
} 

這裏是我的JavaScript:

$("#submitEditBtn").click(function(){ 

     var file_data = $('#editImg').prop('files')[0]; 
     var form_data = new FormData(); 

     if(file_data) 
      form_data.append('fileEdit', file_data); 
     else 
      form_data.append('noImgChanges', "true"); 

     form_data.append('name', $("#editP_name").val()); 
     form_data.append('desc', $("#editP_desc").val()); 
     form_data.append('price', $("#editP_price").val()); 
     form_data.append('id', $("#productEditing").attr("name")); 

     $.ajax({ 
      url: 'imgParser.php', 
      dataType: 'text', 
      cache: false, 
      contentType: false, 
      processData: false, 
      data: form_data, 
      type: 'POST', 
      success: function (response) { 
       console.log(response); 
      }, 
      error: function (response) { 
       console.log("ERROR OCCURED"); 
      } 
     }); 

    }); 

那麼,什麼情況是,我填寫的信息(輸入,圖像等),然後按下按鈕,它發送一個帶有項目id的請求作爲數據。 PHP應該用新的信息更新記錄,但它不會,但如果我在SQL控制檯中輸入完全相同的命令並用一些數據替換變量,它將成功更新它。同樣在chrome控制檯中,它輸出所有數據(正在被回顯)。

任何意見/建議表示讚賞

編輯:

我打印的錯誤(如果有任何)在控制檯中,我得到了

你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「img_src =」圖像/ 80sKIDTee.png正確的語法手冊「WHERE ID ='1行

+1

您是否嘗試'回聲$ SQL;'確保你已經正確的查詢? –

+0

你有沒有得到任何錯誤? – Amir

+0

是的顯然有 –

回答

0

我覺得你從問題中,如果它不因爲你的工作被保存」不要清理輸入,而其他人可能會在某些情況下清理數據庫點,但

更新您的SQL代碼如下:

$sql = "UPDATE products SET name='$productName', description='$productDesc', price='$productPrice', img_src='$productPath' WHERE id='$id'"; 

price='$productPrice'後缺少逗號。

+0

哇不能相信我錯過了這個逗號,你是不是指「不清理輸入」的意思? –

+2

@VadimTatarnikov您直接輸入'$ _POST'數據到查詢中。你需要看看SQL注入預防(https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – DomLip

+0

乾杯我會研究它,即使這個接口純粹是爲了管理員使用,所以SQL注入不是問題。 –

3

1」添加漏掉您的SQL聲明:

$sql = "UPDATE products SET name='$productName', description='$productDesc', price='$productPrice', img_src='$productPath' WHERE id='$id'"; 
0

使表名稱爲簡單的行情或嘗試是error.log SQL查詢,並在phpMyAdmin運行

1

您在查詢失蹤,附近img_src = '$ productPath'

$sql = "UPDATE products SET name='$productName', description='$productDesc', price='$productPrice',img_src='$productPath' WHERE id='$id'"; 
相關問題