У меня строковое сообщение $message = 'Dear $firstname$ $lastname$, your point of city is $city$'
Я хочу получить значение из таблицы данных Mysql для $firstname$, $lastname$ и $city$ и заменить его в сообщение.
У меня есть несколько пользовательских данных, выбранных из баз данных, и новое сообщение, хранящееся в массиве.
$query = $ab->pquery("select firstname, lastname, city from tblaccount where country = $country";
$numOfrows = $db->num_rows($query);
for($i=0; $i<$numOfrows; $i++) {
$toNumber = array();
$toNumber['firstname'] = $db->query_result($result, $i, 'firstname');
$toNumber['lastname'] = $db->query_result($result, $i, 'lastname');
$toNumbers[] = $toNumber;
}
Я хочу, чтобы имя, фамилия и город заменялись динамически для всех пользователей и сохраняли сообщение в массиве.
Как определить замену $firstname$ на результат из базы данных firstname?






$query = $ab->pquery("select firstname, lastname, city from tblaccount where country = $country";
$numOfrows = $db->num_rows($query);
for($i=0; $i<$numOfrows; $i++) {
$toNumber = array();
$message = 'Dear $firstname$ $lastname$, your point of city is $city$';
$toNumber['firstname'] = $db->query_result($result, $i, 'firstname');
$message=str_replace('$firstname$',$toNumber['firstname'],$message); ///something like that
$toNumber['lastname'] = $db->query_result($result, $i, 'lastname');
$toNumber['message'] = $message;
$toNumbers[] = $toNumber;
}
Альтернативный вариант - позволить MySQL выполнять конкатенацию, что приведет к меньшему количеству операций PHP.
$messageSQL = "CONCAT('Dear ', firstname, ' ', lastname, ', your point of city is ', city)";
$query = $ab->pquery("select $messageSQL AS themessage from tblaccount where country = $country";
$numOfrows = $db->num_rows($query);
for($i=0; $i<$numOfrows; $i++) {
$message = $db->query_result($result, $i, 'themessage');
$toNumbers[] = $message;
}
Просто создайте новый массив с именем $messages и сохраните каждый из них в этом массиве.
$query = $ab->pquery("select firstname, lastname, city from tblaccount where country = $country";
$messages = array();
$numOfrows = $db->num_rows($query);
for($i=0; $i<$numOfrows; $i++) {
$firstname = $db->query_result($result, $i, 'firstname');
$lastname = $db->query_result($result, $i, 'lastname');
$city = $db->query_result($result, $i, 'city');
$messages[] = "Dear $firstname $lastname, your point of city is $city";
}
Павел Вы должны включать описание того, что делает ваш код, во все ваши ответы. Я видел, что вы не включаете в свои ответы что-то большее, чем код, и это может быть хорошо на других страницах, но на SO все ответы должны иметь описание. Правильное форматирование - тоже хорошо.