如何使用PHP中的json_encode()将foreach循环中的项添加到字符串中?

时间:2016-08-02 04:36:21

标签: javascript php json foreach

我正在尝试将从数据库中检索到的所有电子邮件插入字符串中,因此我可以使用javascript检查用户在表单字段中键入的电子邮件是否已经注册。我正在尝试使用json_encode()

    $conectar = mysqli_connect(HOST, USER, PASS, DATABASE);
    $listarCorreos = " SELECT userEmail 
                       FROM usuarios 
                    ";
    $resultado = mysqli_query($conectar,$listarCorreos);

    $arrayEmails = mysqli_fetch_array($resultado);

foreach($arrayEmails as $row){
    $emails[]=array($row['userEmail']);
}
echo json_encode($emails);

现在,我收到了这个错误:

  

警告:/home/verificarEmail.php中的非法字符串偏移'userEmail'   在第21行

第21行是$emails[]=array($row['userEmail']);

我做错了什么?

UPDATE:

我也在尝试:

    $resultado = mysqli_query($conectar,$listarCorreos);

$emails = array();
while($row = mysql_fetch_assoc($resultado)) {
  $emails[] = $row;
}
echo json_encode($emails);

我收到了这个错误:

  

警告:mysql_fetch_assoc()期望参数1是资源,   第18行/home/verificarEmail.php中给出的对象

第18行:while($row = mysql_fetch_assoc($resultado)) {

4 个答案:

答案 0 :(得分:1)

使用this,如下所示

MYSQLI_ASSOC

答案 1 :(得分:1)

那里有一些问题。要将您的电子邮件放入数组中,请执行以下操作:

$resultado = mysqli_query($conectar,$listarCorreos);
if(!resultado) die($mysqli_error($conectar));//check for errors

$emails = mysqli_fetch_all($resultado);//fetch all results
echo json_encode($emails);

这应该让您的代码正常工作或向您显示错误。但是,请不要这样做

  

所以我可以使用javascript来检查用户输入的电子邮件是否成了   表单字段已注册

这是一个可怕的想法安全明智,因为它会暴露所有用户'发送电子邮件给那些甚至没有注册到您网站的人。您应该直接在DB中查找所需的用户名。如果它不存在,那么之前它还没有注册过。 Javascript方面只应获得availablenot available响应。

过程(伪代码):

  1. SELECT userEmail from usarios WHERE userEmail = ??是要查找的电子邮件
  2. 执行查询并捕获$resultado
  3. 如果$resultado为false,die(mysqli_error($conectar))显示错误
  4. 如果mysqli_num_rows($resultado) === 0电子邮件是available;别的not available
  5. 回应availablenot available到Javascript

答案 2 :(得分:0)

use the code like below


$conectar = mysqli_connect(HOST, USER, PASS, DATABASE);
     $listarCorreos = " SELECT userEmail 
                       FROM usuarios 
                    ";
    $resultado = mysqli_query($conectar,$listarCorreos);    

    while ( $row = mysqli_fetch_array($resultado) ) {
      $emails[]=$row['userEmail'];    
    }
echo json_encode($emails);

答案 3 :(得分:-1)

使用如下代码 $ conectar = mysqli_connect(HOST,USER,PASS,DATABASE);      $ listarCorreos =“SELECT userEmail                        来自usuarios                     “;     $ resultado = mysqli_query($ conectar,$ listarCorreos);

while ( $row = mysqli_fetch_array($resultado) ) {
  $emails[]=$row['userEmail '];    
}

echo json_encode($ emailils);