С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Amath
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 40
1

Как работают prepared statements ?

05.12.2017, 10:07. Просмотров 757. Ответов 5

Всем привет. Почитал о prepared statements, но никак не могу сообразить как применить его на практике в своем коде. Подскажите, пожалуйста.

Есть 4 таблицы, допустим base, base1, base2, base3. Соответственно нужно 4 select с каждой таблицей отдельно. Т.е в подстановку:

PHP
1
$Links->onlyLinkName($link, $baseName)
нужно вставлять имя таблицы, например так:

PHP
1
$Links->onlyLinkName($link, 'base1')
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Links
{
    public $id;
    public $title;
    public $content;
 
    public function onlyLinkName($link, $baseName)
    {
 
        $query = "SELECT id, title FROM $baseName";
        $result = mysqli_query($link, $query);
 
        if(!$result){
            mysqli_error($link);
        }
 
        $row = mysqli_num_rows($result);
        $array = array();
 
        for ($i=0; $i < $row; $i++) {
            $array[] = mysqli_fetch_assoc($result);
        }
 
        return $array;
    }
}
 
$Links = new Links();
 
<section class="step">
<h4>Общая информация</h4>
    <ul>
        <? foreach ($Links->onlyLinkName($link,  'base1') as $item): ?>
           <li><a href="/article.php?id=<?=$item['id']?>"><?=$item['title']?></a></li>
        <? endforeach; ?>
     </ul>
</section>
Буду признателен за любые мысли.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2017, 10:07
Ответы с готовыми решениями:

Как использовать, создавать Prepared statement?
Как использовать, создавать Prepared statement? например у меня есть код: ...

Не выполняется INSERT средствами PDO prepared statement
Собственно проблема не вставляются данные в бд когда передаю их через...

Number of variables doesn't match number of parameters in prepared statement
Собственно, код $query = mysqli_prepare($db, &quot;SELECT * FROM `users_db` WHERE...

"The used SELECT statements have a different number of columns"
имеется запрос (SELECT brand_id,brand_name FROM brands WHERE...

Как работают ссылки в PHP
Обсуждение статьи Как работают ссылки в PHP От автора Данная статья...

5
ytf
Нарушитель
233 / 254 / 184
Регистрация: 15.08.2017
Сообщений: 1,483
06.12.2017, 18:32 2
а какова цель изучения prepared statements?
0
Jodah
Эксперт PHP
2855 / 2484 / 1059
Регистрация: 01.08.2012
Сообщений: 8,785
06.12.2017, 19:02 3
В подготовленные запросы нельзя подставлять названия колонок и таблиц, поэтому в вашем случае они не помогут. Одно из решений - белый список разрешённых названий.
0
Amath
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 40
08.12.2017, 20:22  [ТС] 4
Цитата Сообщение от Jodah Посмотреть сообщение
В подготовленные запросы нельзя подставлять названия колонок и таблиц, поэтому в вашем случае они не помогут. Одно из решений - белый список разрешённых названий.
Т.е такая реализация, с постановкой имени базы, не возможна в принципе?
0
Jodah
Эксперт PHP
2855 / 2484 / 1059
Регистрация: 01.08.2012
Сообщений: 8,785
08.12.2017, 20:42 5
Лучший ответ Сообщение было отмечено Para bellum как решение

Решение

Amath, невозможна в каком смысле? Никто не мешает сделать так:

PHP
1
2
3
4
5
6
7
public function onlyLinkName($pdo, $baseName)
{
    if(!in_array($baseName, ['articles', 'pages', 'products'], true))
        die('Некорректное название таблицы.');
 
    return $pdo->query('SELECT id, title FROM $baseName')->fetchAll(PDO::FETCH_ASSOC);
}
0
Jewbacabra
Эксперт PHP
3596 / 2984 / 1325
Регистрация: 24.04.2014
Сообщений: 9,042
08.12.2017, 21:19 6
Цитата Сообщение от Jodah Посмотреть сообщение
PHP
1
'SELECT id, title FROM $baseName'
PHP
1
'SELECT id, title FROM '.$baseName
1
08.12.2017, 21:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2017, 21:19

Как работают Array Functions с mysql запросами
Допустим есть ассоциативный массив взятый из мануала: &lt;?php $fruits =...

PHP функции file_exists, is_file, is_readable не работают с кириллицей. Как быть?
PHP функции file_exists, is_file, is_readable не работают с кириллицей. Как...

Statements
Доброго времени! Уважаемые знающие, пожалуйста помогите разобраться. У...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru