Member 14819235 Ответов: 2

Как я могу использовать переменную PHP внутри $row["..."];


Привет,
в SQL SELECT, когда мы используем $row["имя таблицы"], как мы можем использовать переменную PHP вместо строкового имени таблицы?

Что я уже пробовал:

<pre>
for ($i=1; $i <= 1000; $i++){
$sql ="SELECT * FROM SPC WHERE id='$i'";
$result = $con->query($sql);
$row = $result->fetch_assoc();
$panel = $row["Panel"];
}
//No problem to this point, I got what I wanted
//Now, can we make "Panel" as a PHP variable?, I tried this but it's not working
$prmetr = "Panel";
$panel = $row["<?php echo $prmetr; ?>"];
//or
$panel = $row['$prmetr'];
//not working too
<pre>

2 Ответов

Рейтинг:
4

W∴ Balboos, GHB

Вы проходите через цикл для всех 1000 значений $id. Это невероятно расточительно по отношению к ресурсам.

Вы получите те же результаты с помощью одного запроса что-то вроде:
Выберите * FROM SPC WHERE id BETWEEN 0 AND 1000 ORDER BY id
Затем работайте с результатами, заданными в цикле.

Кроме того, как отмечалось в решении 1, Вы не должны иметь кавычек вокруг значения переменной php, когда она используется в качестве индекса.


Member 14819235

Я попробую, большое вам спасибо

W∴ Balboos, GHB

В качестве бесплатной бонусной справки: если вы используете индексированный тип данных, например $row[], вам нужно обернуть его в фигурные скобки, если он находится в текстовой строке с двойными кавычками.

Вот так: $text = "меня зовут {$row['name']}";

Рейтинг:
13

phil.o

Попробуй

$row[$prmetr]


Вы также должны использовать подготовленный оператор вместо объединения строк для построения вашего запроса:
PHP MySQL подготовленные заявления[^]

И тот факт, что вы заключаете идентификатор между кавычками, говорит о том, что вы определили числовое поле в своей базе данных с помощью строкового типа; это также плохая практика, вы всегда должны использовать правильный тип данных.


Member 14819235

Это работает, спасибо