2012-03-13 19 views
0

次のコードは、自分のAjax通知システムの一部であり、なんらかの理由で50%しか動作しません。私がコードを呼び出すと、それは実行され、エコーは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 PHPの上のほうですよ –

+0

うん、間違ったバージョンをアップロードしたこれには 'session_start()'は含まれていませんでした。愚かな私...あなたは正しかったマイケル –

答えて

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と$ removeを使用して、欠落している値を見つけ出してください。

+1

'$ insert'と' $ remove'は文字列ではなくmysql_query()の戻り値としてブール値を含みます。 –

関連する問題