使用带有ajax形式的foreach mysqli查询

时间:2013-01-26 22:02:25

标签: php javascript jquery ajax

我对jquery和ajax很新,我正试图融入我的所有形式。我可以做更简单的形式,但是这个让我很难过。事实是:

1.必须填写至少1个输入字段

2.通过mysqli_query

检查所有输入字段

3.当输入字段具有在mysql中找不到的值时,foreach循环断开并且该值变量被回显,接着是“不是成员”。

问题是我可以回应“成功”或“失败”,然后在ajax'成功函数(响应)'中使用它来做一些事情,但我怎样才能获取变量值并将其合并到一个警告中:alert(// $ value //不是会员)?这是php:

foreach($_POST as $value)
{
    $usercheck =  "SELECT email FROM users WHERE email = '$value'";
    $usercheck = $db->query($usercheck);

    if($usercheck->num_rows !== 0 || $value =="") 
    {
        $x="1";
    } 
    else 
    {
        $x="2";
    }
    break;
}

if($value == "") 
{
    echo "none filled in";
} 
else
    if ($x == "1")
    {
        echo "all filled boxes are users";
    } 
    else 
    {
        echo $value." is not a user";
    }

2 个答案:

答案 0 :(得分:0)

最好在验证通过"ok"时发送回邮件。然后在ajax成功中,您可以检查消息是否为"ok",如果是,您可以重定向到您想要的位置。如果它无效,请使用返回的消息执行somethig。

$.ajax({
   url:'/path/to server'/,
   success:function(response){
      if(response=='ok'){
         /* do redirect*/
         window.location='someOtherpage';
      }else{
         $('#formErrorElementID').text( response);
     }
  }
});

如果您需要发送回特定网址以供用户转到,可以修改响应以使用JSON并发回如下内容:

{ "status": "ok", "url": "newPage.php"}

OR

{ "status": "fail", "message": "is not a user"}

然后在AJAX success

    if(response.status=='ok'){
         /* do redirect*/
         window.location=response.url;
      }else{
         $('#formErrorElementID').text( response.message);
     }

答案 1 :(得分:0)

欢迎使用Stack Exchange!

首先,我想提一下SQL过程中存在的重大安全漏洞。无论何时运行查询,您总是希望清理条目以防止注入攻击。一些方法是通过prepared statements。这样,将不会执行潜在的恶意用户输入:

$usercheck = $db->prepare("SELECT email FROM users WHERE email = ?");
$usercheck->execute(array($value));

如上所述,我认为JSON对象是最实用的,因为它是与许多语言兼容的对象结构。你的最后三个'回声'分别是这样的:

echo json_encode(array("success" => false, "message"=> "Empty field found."));
...
echo json_encode(array("success" => true, "message"=> "all filled boxes are users"));
...
echo json_encode(array("success" => false, "message"=> $x."is not a user."));

在JavaScript方面,您将拥有:

..., function(response) {
    result = JSON.parse(response);
    (result.success) ? ...success code... : alert(result.message);
});

根据您的需要,您从PHP传递的对象可能会有所不同。

希望这有帮助。