2013-06-04 25 views
0

我想我与PHP和AJAXPHP更新MySQL数据库与AJAX调用没有做任何事情

我已经测试过,发现正确的数据被发送,但PHP更新数据库中的字段即处理更新无法正常工作。

发生的一切就是我在条件中得到了else响应。

我需要根据用户输入是什么来更新数据库。

就像我说的,我得到的回应是else回应。

$youruname = $_POST['youruname']; 
$selectedplayer = $_POST['selectedplayer']; 
$selPlayerUname = $_POST['selPlayerUname']; 

$flag = ""; 
$itStatus = ""; 

$checkit = mysqli_query($conn,"SELECT it FROM login WHERE uname='$selPlayerUname'"); 

while($row = mysqli_fetch_array($checkit)) 
{ 
    $itStatus = $row["it"]; 
} 

if($itStatus == "not it") 
{ 
    mysqli_query("UPDATE login SET it = CASE WHEN uname = '$youruname' THEN 'not it' ELSE 'it' END WHERE uname IN ('$youruname', '$selPlayerUname')"); 

    $flag = "success"; 
} 
else if($itStatus == "it") 
{ 
    $flag = "nope"; 
} 
else 
{ 
    $flag = "error"; 
} 
echo json_encode(array("message" => $flag, "tagged" => $selectedplayer)); 

mysqli_free_result($checkit); 
mysqli_close($conn); 
+0

的var_dump($ iStatus)这是什么返回 – GGio

+0

警告:你的查询很容易受到SQL注入。请切换到[已准备好的语句](http://bobby-tables.com/php.html)。 –

+0

如果您的更新查询中有'SET it = CASE',如果CASE是一列没有问题,但是,如果不是?另外,你的代码很容易被sql注入。了解如何使用准备好的语句。 –

回答

1

这里有一些令人困惑的东西。你有一个循环和循环条件。不应该你的更新查询像一个循环中:

while($row = mysqli_fetch_array($checkit)) 
{ 
    $itStatus = $row["it"]; 


    if($itStatus == "not it") 
    { 
     mysqli_query("UPDATE login SET it = CASE WHEN uname = '$youruname' THEN 'not it' ELSE 'it' END WHERE uname IN ('$youruname', '$selPlayerUname')"); 

     $flag = "success"; 
    } 
    else if($itStatus == "it") 
    { 
     $flag = "nope"; 
    } 
    else 
    { 
     $flag = "error"; 
    } 
} 

$ iStatus从数据库中获取最后一个值,因为它在循环,然后你在条件语句

如果上面没有再帮查检查你的$ _ POST值,看看是否有任何人都空白并做的phpMyAdmin查询看看它实际上返回任何东西。

+0

我还需要将连接传递给'mysqli_query'。我没有那样做。但是,您提出了一个关于循环的重点,以及在哪里放置查询进行更新。为此,我感谢你。 – copilot0910

0

mysqli_query要求您传递连接。

我不是在干这个。

当我直接将值传递给查询时,我想通了。

非常感谢大家的帮助