Я хотел бы сохранить значение из базы данных в string
, Я учу PHP и до сих пор просто не понимаю эту оценку
$db_user = $database->runSQLQuery("SELECT * FROM users");
while($feld = mysql_fetch_array($db_user)){
$save= $feld['username'].",";
}
// Tom,Anne,Alf
echo $save;
К сожалению, это сохраняет мне значение здесь: tom,
Попробуй это:
$save = '';
$db_user = $database->runSQLQuery("SELECT * FROM users");
while($feld = mysql_fetch_array($db_user))
{
$save .= $feld['username'].",";
}
// Tom,Anne,Alf
echo $save;
$save
переменная теперь добавляет результат из базы данных в строку, это называется конкатенацией. Вы можете прочитать больше об этом Вот.
WHILE-Loop перезаписывает ваш $save
каждый раз. Если вы хотите объединить его с предыдущими значениями, используйте $save .= $feld['username'].",";
(обратите внимание на дополнительные .
)
Тем не менее, в конечном итоге это приведет к Тому, Энн, Альфу, поэтому вы должны удалить последний знак «,», чтобы получить желаемый результат.
Без запятой, как ваш комментарий.
$save = "";
$concat = "";
$db_user = $database->runSQLQuery("SELECT * FROM users");
while($feld = mysql_fetch_array($db_user))
{
$save .= $concat . $feld['username'];
$concat = ",";
}
// Tom,Anne,Alf
echo $save;
Завершающую запятую можно обрабатывать, не вводя другую переменную. Вот как я обычно это делаю:
$save = "";
$db_user = $database -> runSQLQuery('SELECT username FROM users', MYSQL_ASSOC);
while ( $feld = mysql_fetch_array($db_user)) {
if ( $save != "" ) $save .= ',';
$save .= $feld['username'];
}
Я изменил ваш SELECT, чтобы было понятно, что вас интересует только имя пользователя. Это также быстрее.
Кроме того, быстрее и чище указывать MYSQL_ASSOC (вместо значения по умолчанию MYSQL_BOTH), поэтому вы не получите две копии всех полей.
Стилистически я всегда использую одинарные кавычки в PHP для простых строк, поэтому PHP не нужно проверять подстановку переменных и т. Д. За одним исключением: я использую ""
для пустой строки, потому что ''
легко спутать с "
,