以下代码是我的ajax通知系统的一部分,由于某种原因,它只能工作50%。当我调用代码时,它会运行,然后回显success
或remove
,但它似乎不会更改数据库值。任何原因?我已经尝试将我的列名称放在引号中,但回显是错误。请帮忙,谢谢!
<?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,我已经检查了网络标签,它发送了正确的值。
答案 0 :(得分: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']);
答案 1 :(得分:0)
Echo $ insert和$ remove并找到缺少的值。