2015-10-02 42 views
0

請幫助,因爲我有問題。 我有一個回調腳本,另一個網站正在向我發送一些數據,並且mysql不更新記錄。我並不介意保護我的代碼,因爲在這個測試階段它並不重要。我的代碼是:Mysql不更新數據庫中的記錄

$dbhost = 'localhost'; 
    $dbuser = 'user'; 
    $dbpass = 'pass'; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 

    $dbname = 'dbname'; 
    mysql_select_db($dbname); 
    $postData = $_POST; //GET ALL POST DATA 

    //GET ALL DATA FROM POST AND PREPARE IT FOR SQL 
    $mId = $postData['id']; 
    $mDone = date('Y-m-d H:i:s',$postData['donedate']); 
    $mStatus = $postData['status']; 
    $mText = $postData['txtstatus']; 
    if ($mText == 'DELIVRD') 
     $mText = 'DELIVERED'; //Correction of test status 
    $mPhone = $postData['receiver']; 

    //ADD TO DB 
    if ($postData['type'] == 1){ //success 
     $sql = mysql_query("UPDATE message_details SET doneDate='$mDone', status='$mText' WHERE contact='$mPhone' AND msgId='$mId'"); 
     echo "UPDATE message_details SET doneDate='$mDone', status='$mText' WHERE contact='$mPhone' AND msgId='$mId'" 
    }elseif ($postData['type'] == 2) {//FAILED 
     $sql = mysql_query("UPDATE message_details SET doneDate='$mDone', status='FAILED' WHERE contact='$mPhone' AND msgId='$mId'"); 
echo "UPDATE message_details SET doneDate='$mDone', status='FAILED' WHERE contact='$mPhone' AND msgId='$mId'" 
    } 

回聲mysql查詢,然後在我的數據庫中運行它手動,工作正常。我每秒獲得10個請求。 爲什麼當這個代碼運行

感謝

沒有它的工作

編輯: 我加入這行代碼: file_put_contents( 'ERRORS.TXT',mysql_error($康恩)'\ n 」,FILE_APPEND); 和回報是:

\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n

因此,沒有從MySQL錯誤

+2

使用'''echo mysql_error($ conn)'''從失敗的查詢中獲取錯誤並在此發佈結果請 –

+1

那麼代碼有很多錯誤。首先,我想指出使用** mysql _ ***函數已被棄用,並將很快被刪除。所以請開始使用** mysqli _ ***或** PDO **來代替。當你這樣做的時候,你應該開始學習和使用準備好的語句......最後但並非最不重要的是,你需要建立一些錯誤處理.. – Naruto

+0

你看了'php錯誤日誌'的消息'錯誤連接到mysql' – RiggsFolly

回答

0

如果查詢是合理的,就像您說的那樣,因爲您是獨立運行它的,那麼它必須是連接或選擇有錯誤的數據庫。您需要養成測試數據庫訪問調用結果的習慣。

因爲我認爲這段代碼沒有關聯的瀏覽器頁面,所以您需要檢查錯誤並將錯誤代碼發送到您可以看到的某處,例如類似這樣的內容。或定期檢查您的標準服務器日誌是否有錯誤。

$dbhost = 'localhost'; 
$dbuser = 'user'; 
$dbpass = 'pass'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) 
if (! $conn) { 
    file_put_contents('admin_error.log', 
         mysql_error() . "\n", 
         FILE_APPEND); 
    exit; 
} 

$dbname = 'dbname'; 
if (! mysql_select_db($dbname)) { 
    file_put_contents('admin_error.log', 
         mysql_error() . "\n", 
         FILE_APPEND); 
    exit; 
} 

當然這裏來規範警告:

你不應該使用新代碼的mysql_數據庫訪問擴展。它已被棄用多年,並將於2015年底在PHP7中完全消失。請使用mysqli_PDO擴展。 See this post to help in that decision如果沒有別的,它的相當不錯的閱讀。