【问题标题】:PHP foreach echo prints “Symbols” as valuePHP foreach echo 将“符号”打印为值
【发布时间】:2018-06-14 12:27:20
【问题描述】:

我通过 Ajax 使用下拉菜单从 MySQL 动态获取数据,这很成功,但是当我回显数组值时,它没有给我电子邮件列表,它只显示符号。

请看下图:

从电子邮件列表中,这些是回显的符号。

这是我的 php 代码

if(isset($_POST["confirm_no"])){

    $d = $_POST['confirm_no'];
    $query = mysqli_query($mysqli, "select * from jobseeker WHERE confirm_no LIKE  '$d%'");

    //Display  list
    if(mysqli_num_rows($query) > 0){
          $row = mysqli_fetch_array($query);
            foreach ($row as $r) {
            $emailArr[] = $r["mails"];
        }
         $emails = implode(";", $emailArr);

        echo $emails;

    }else{
        echo 'No email for this selection.';
    }
}

还有 jQuery

$(document).ready(function(){ 

$('#smode').change(function(){
var confirm_no = $(this).val();
$.ajax({
   type:'POST',
  data:"confirm_no="+confirm_no,
   url:'get_email.php',
   success:function(data){
       $('#emaillist').val(data);
   } 

});
});
});

为什么会出现这个符号?

【问题讨论】:

  • mysqli_fetch_array 获取索引为 0 的数组,而不是关联的。

标签: php jquery mysqli


【解决方案1】:

将您的代码重建为:

//Display  list
if(mysqli_num_rows($query) > 0){
    // You have many results - fetch them all iteratively
    // use `fetch_assoc` to have ability to use `mails`
    while ($row = mysqli_fetch_assoc($query)) {
        $emailArr[] = $row["mails"];
    }
    $emails = implode(";", $emailArr);

    echo $emails;
}else{
    echo 'No email for this selection.';
}

【讨论】:

  • 感谢大家的帮助。
【解决方案2】:

你获取的数据不正确,你只获取了一行(对mysqli_fetch_array()的调用

$row = mysqli_fetch_array($query);
foreach ($row as $r) {
    $emailArr[] = $r["mails"];
}

最好写成

while( $row = mysqli_fetch_assoc($query)) {
    $emailArr[] = $row["mails"];
}

或者……

$emailArr = mysqli_fetch_all($query, MYSQLI_ASSOC);
$emailArr = array_column($emailArr, "mails");

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多