【问题标题】:Trying to fetch all rows filtered by id and returning them as array(mysql,php)尝试获取按 id 过滤的所有行并将它们作为数组(mysql,php)返回
【发布时间】:2018-01-23 05:47:53
【问题描述】:

我将用户名作为过滤器发送到数据库,以仅使用 Ajax 获取与其关联的数据行,但我得到的响应为空。

 $.ajax({
        type: 'POST',
        url: 'fetch_followed_users.php',
        data: {
            user : username, 
        },
        dataType: 'json',
        cache: false,
        success: function(follows) {



                 var jArrayAllFollows=[];
                 jArrayAllFollows = follows;

        },
 });

这是来自 fetch_followed_users.php:

<?php

   session_start();

   require 'database.php';

      $sql6 =  $conn->prepare("SELECT * FROM followedusers WHERE user = :user"); 
      $sql6->bindParam(':user', $_POST['user']); 
      $sql6->execute();
      $results=array();
      $results = $sql6->fetchAll(PDO::FETCH_COLUMN)

      echo json_encode($results);

?>

如果有任何帮助,我将不胜感激。我知道这很简单,但我就是做不好。

【问题讨论】:

  • 你能显示ajax请求响应吗?
  • 您已经在follows 中拥有了全部数据,为什么还需要在成功块中进行另一个循环,如果您只关心计数,为什么不只是让服务器响应返回实际计数 echo json_encode(array('count' =&gt; count in php)),然后只需阅读 follows.count 就可以了
  • 你有什么回应吗?如果不是,则更改 ajax 调用中的删除数据类型标记
  • 顺便说一句,这不是mysqli吗?我认为在准备好的语句中不允许使用命名占位符,或者这是PDO,这有点混淆
  • 我没有收到任何回复。 Ajax 正确地将用户名作为用户发送到 fetch_followed_users。我尝试删除数据类型。还有 Ghost,我还没有开设任何关于 mysqli 或 PDO 的课程,我正在解决这个问题,所以这就是为什么这一切都是一团糟,因为我一直在尝试使用这里的示例并使其发挥作用。这是我的旧代码和此处示例中的新代码的混合和混搭。我想旧的需要在这里更换。

标签: php mysql ajax pdo


【解决方案1】:

让它更简单,只需在 PHP 中获取计数并将其作为响应发送。

基本思路:

在 PHP 中获取值并发送计数:

<?php

session_start();

require 'database.php';

$sql6 =  $conn->prepare("SELECT COUNT(*) AS total FROM followedusers WHERE user = :user"); 
$sql6->bindParam(':user', $_POST['user']); 
$sql6->execute();
$count = $sql6->fetchColumn();

echo json_encode(array('count' => $count));

?>

然后在 JS 成功块中,访问响应即可:

success: function(response) {
    console.log(response.count);
    // do what you will with the count
},

注意:不要将 MySQLi 与 PDO 混合使用,只需选择一个并在整个代码中使用它即可。

【讨论】:

  • { $sql6 = $conn->prepare("SELECT * FROM followusers WHERE user = :user"); $sql6->bindParam(':user', $_POST['user']); $sql6->执行(); $结果=数组(); $results = $sql6->fetchAll(PDO::FETCH_COLUMN) echo json_encode($results);
  • @Still.Learning 使用的 PDO 标志不正确,请使用 PDO::FETCH_ASSOC
  • @Still.Learning 很高兴这有帮助
猜你喜欢
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
相关资源
最近更新 更多