// 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更新数据库中的内容,这就是我需要删除最后一个逗号的原因
而且我知道这段代码不安全,除了个人使用之外,我不会将它用于其他任何东西,我希望有人可以帮助我解决这个问题,我已经尝试了好几天了,看起来很简单,我敢打赌我错过了一些非常愚蠢的东西!
答案 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) ";