Я новичок в использовании PDO и немного застрял - есть ли способ добавить строку в возвращаемый массив fetchAll?Добавление столбца/переменной в строку PDO FetchAll
Я хочу использовать значение в строке и создать новое значение из него. Надеюсь, мой пример достаточно ясен.
class.php
--------------------
class connect
{
//all PDO database connection functions here
}
class Display
{
function cars($colour)
{
$crud = new crud();
$crud->conn();
$sql = "SELECT * FROM cars WHERE colour=:colour";
$stmt = $crud->db->prepare($sql);
$stmt->bindParam(':colour', $colour);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
****WHAT I WANT TO DO (see edit)*****
foreach ($rows as $row)
{
ADD A ROW CALLED 'newprice' that equals ($row['oldprice'] + 300/2)
}
$this->results = $rows;
}
}
index.php
--------------------
//other html code...
$D = new Display;
$D->cars('1');
foreach($D->results as $row)
{
?>
<div class="car">
<h1>Car Name:</h2>
<?=($row['model']);?>
Old Price:
<?=$row['price'];?>
New Price:
<?=($row['newprice']);?> <- outputting the new row I created
</div>
}?>
Можно ли это сделать или есть другой более эффективный способ сделать это?
Извините, я думаю, что я не был очень ясен с моим примером! Я хочу сделать намного больше, чем просто математически изменить значение для нового столбца - я хочу preg_split/запустить его через другой класс и т. Д.!
Лучшее решение я получил до сих пор, чтобы создать новый многомерный массив из PDO при условии массива, а затем добавлять/редактировать этот массив, например:
$new=array();
$key_loop = 0;
$row_loop = 0;
foreach ($rows as $val)
{
$keys = array_keys($val);
foreach ($keys as $key)
{
$new[$row_loop][$keys[$key_loop]] = $val[$keys[$key_loop]];
$new[$row_loop]['new_entry'] = 'this works';
$key_loop++;
}
$row_loop++;
$key_loop = 0;
}
Я думаю, что вы имеете в виду «добавить новый столбец * *» для возвращаемых строк. – Xeoncross
Да, это эквивалентно этому! У меня был поиск, и все, что я мог найти, это вещи на обязательных столбцах, которые я не думаю, что мне нужно – penpen