在回显一行时摆脱最后一个逗号?

时间:2017-07-15 16:29:26

标签: php mysql sql

    // This gets all the users that are active
// The limit is completely random, it is set to 2 for this example
$sql = <<<SQL
SELECT *
FROM `accounts`
WHERE active = 1
LIMIT 2
SQL;

if(!$getaccounts = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

while ($row = $getaccounts->fetch_assoc()) {
    $getid = $row["id"].',';

    $getid = substr($getid, 0, -1);

    $getusername = $row["username"];
    $getpassword = $row["password"];

    echo $getid;
    echo $getusername."<br>";
    echo $getpassword."<br>";
}

我知道这还没有准备好,但除了个人使用之外我不会用它。

我无法理解为什么这没有摆脱最后一个逗号?

输出可能类似于&#34; 32,14,&#34;

我想通过使用&#34; substr&#34;来摆脱最后一个逗号。功能

但是我从$ getid获得的输出是&#34; 3214&#34; (它删除了所有逗号而不是最后一个逗号。

我需要输出&#34; 32,14&#34;但它没有用?

有人可以告诉我哪里出错了吗?

如果我做rtrim,它会做同样的事情并且摆脱所有的逗号!我将使用id更新数据库中的内容,这就是我需要删除最后一个逗号的原因

而且我知道这段代码不安全,除了个人使用之外,我不会将它用于其他任何东西,我希望有人可以帮助我解决这个问题,我已经尝试了好几天了,看起来很简单,我敢打赌我错过了一些非常愚蠢的东西!

2 个答案:

答案 0 :(得分:2)

你有一个XY Problem 您希望将所有id连接成逗号分隔的字符串 通过将项添加到数组然后implode(),这是一个更简单的解决方案。

<?php 
// rest of your code 
$ids = Array();

while ($row = $getaccounts->fetch_assoc()) {
   $ids[] = $row["id"];
   $getusername = $row["username"];
   $getpassword = $row["password"];

   echo $getusername."<br>";
   echo $getpassword."<br>";
}
echo "ids: " . implode(",",$ids);

答案 1 :(得分:0)

您应该编写类似..

的代码
  $getid = ""; 
  while ($row = $getaccounts->fetch_assoc()) {
      $getid .= $row["id"].',';
  }
 $getid = rtrim($getid,',');

 $q = " UPDATE accounts SET active = '0' WHERE id IN ($getid) ";