Итак, у меня есть два вопроса.
Вопрос 1:
Мой оператор выбора возвращает 2 элемента.Тем не менее, я должен выполнить цикл по элементам, которые он возвращает, чтобы добавить результаты в один массив с именем $results
. Есть ли функция, которая уже возвращает данные в виде одного единственного массива (такой же / похожий на то, как вывод сейчас, но без цикла while).
оператор выбора-code.php
$stid = oci_parse($conn, "SELECT *
FROM test_table");
oci_execute($stid);
while($row=oci_fetch_array($stid)) {
$results[] = $row;
}
print_r($results);
Вывод:
Array
(
[0] => Array
(
[0] => 1
[MY_ID] => 1
[1] => John
[F_NAME] => John
)
[1] => Array
(
[0] => 2
[MY_ID] => 2
[1] => Mike
[F_NAME] => Mike
)
)
Вопрос 2:
Я перечитывал ответы на вопросы stackoverflow и их несколькоразные ответы, которые противоречат друг другу.Для mysqli есть четкий ответ, но для оракула, кажется, люди спорят об этом. Является ли способ, которым я делаю это ниже, правильный способ устранения SQL-инъекций?Также я использовал функцию oci_bind_by_name
2 раза, чтобы связать my_id
и f_name
.Есть ли способ вызвать функцию связывания один раз и связать обе переменные?
insert-Statement.php
$my_id = 3; // Pretend this is an input from a random user, using my website
$name = "Bobby"; // Pretend this is an input from a random user, using my website
$sql = "INSERT INTO test_table (my_id, f_name)
VALUES (:id, :f_name)";
$stid = oci_parse($conn, $sql);
oci_bind_by_name($stid, ":id", $my_id);
oci_bind_by_name($stid, ":f_name", $name);
oci_execute($stid);