2015-10-02 3 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 запросов в секунду. Почему это не работает, когда этот код работает

Благодаря

EDIT: я добавил эту строку в коде:. file_put_contents ('errors.txt', mysql_error ($ сопп) '\ п », FILE_APPEND); и возвращение:

\ п \ п \ п \ п \ п \ п \ п \ п \ п \ п \ п

Так что никаких ошибок из MySQL

+2

Используйте '' 'эхо mysql_error ($ соппы)' '' получить ошибку из неудачных запросов и почтовых результатов здесь пожалуйста –

+1

Ну есть много вещей неправильно с вашим кодом .. Прежде всего я хочу что использование ** mysql _ *** функций устарело и скоро будет удалено. Поэтому, пожалуйста, начните использовать ** mysqli _ *** или ** PDO **. В то время как вы это делаете, вы должны начать изучать и использовать подготовленные заявления ... И последнее, но не менее важное: вам необходимо создать некоторую обработку ошибок. – Naruto

+0

Вы заглянули в журнал ошибок php для сообщения 'Error подключение к 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_ базы данных для нового кода. Он устарел в течение многих лет и полностью исчезнет в PHP7, который должен выйти в конце 2015 года. Вместо этого используйте расширенияили PDO. See this post to help in that decision, если ничего другого его довольно хорошо читать.

Смежные вопросы