2012-03-13 3 views
0

Следующий код является частью моей системы уведомлений ajax и по какой-то причине работает только на 50%. Когда я вызываю код, он запускается, а затем echo либо success, либо remove, но, похоже, он не изменяет значения базы данных. Любая причина? Я попытался помещать имена столбцов в кавычки, но это эхо-ошибка. Пожалуйста, помогите, спасибо!Обновление PHP не будет правильно обновлять базу данных

<?php 
require_once('.conf.php'); 
$notid = mysql_real_escape_string($_GET['notification_id']); 
$username = mysql_real_escape_string($_SESSION['uname']); 
$action = mysql_real_escape_string($_GET['action']); 

if ($action == 'add') { 
    $insert = mysql_query("UPDATE updates SET object_fav = '1' WHERE username = '$username' AND id = '$notid'") or die('Could not connect: ' . mysql_error()); 
    echo 'success'; 
} elseif($action == 'sub') { 
    $remove = mysql_query("UPDATE updates SET object_fav = '0' WHERE username = '$username' AND id = '$notid'") or die('Could not connect: ' . mysql_error()); 
    echo 'remove'; 
} else { 
    echo 'error'; 
} 
?> 

Я знаю, что это не JavaScript, я проверил вкладку сети и отправляет правильные значения.

+2

Ну, ваши вызовы 'die()' были бы запущены, если запрос был выведен из строя. 'echo mysql_affected_rows();' вместе с 'success/remove'. Скорее всего, вы просто не подходите ни к каким строкам, потому что '$ username' или' $ notid' не содержит того, что вы ожидаете от него –

+0

@michael Yeah выше выше в php –

+0

Хмм, получается, что я загрузил неправильную версию из которого не было 'session_start()'. Глупый я ... Вы были правы michael –

ответ

2

Если это начало скрипта, вы не вызывали session_start(), и поэтому $_SESSION['uname'] будет содержать пустое значение. Запрос выполняется успешно, потому что он синтаксически корректен, но не соответствует строкам и поэтому не выполняет обновление.

session_start(); 
require_once('.conf.php'); 
$notid = mysql_real_escape_string($_GET['notification_id']); 
$username = mysql_real_escape_string($_SESSION['uname']); 
$action = mysql_real_escape_string($_GET['action']); 
0

Echo $ insert and $ удалить и найти, какие значения отсутствуют.

+1

'$ insert' и' $ remove' содержат booleans как возврат 'mysql_query()', а не строки. –

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