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

Как работают prepared statements ? - PHP БД

05.12.2017, 10:07. Просмотров 142. Ответов 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>
Буду признателен за любые мысли.
http://www.cyberforum.ru/php-database/thread1083203.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2017, 10:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как работают prepared statements ? (PHP БД):

Не выполняется 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 От автора Данная статья...

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

5
ytf
200 / 213 / 174
Регистрация: 15.08.2017
Сообщений: 1,174
06.12.2017, 18:32 #2
а какова цель изучения prepared statements?
0
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
06.12.2017, 19:02 #3
В подготовленные запросы нельзя подставлять названия колонок и таблиц, поэтому в вашем случае они не помогут. Одно из решений - белый список разрешённых названий.
0
Amath
0 / 0 / 2
Регистрация: 19.03.2015
Сообщений: 40
08.12.2017, 20:22  [ТС] #4
Цитата Сообщение от Jodah Посмотреть сообщение
В подготовленные запросы нельзя подставлять названия колонок и таблиц, поэтому в вашем случае они не помогут. Одно из решений - белый список разрешённых названий.
Т.е такая реализация, с постановкой имени базы, не возможна в принципе?
0
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
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
3088 / 2675 / 1222
Регистрация: 24.04.2014
Сообщений: 8,179
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
Привет! Вот еще темы с решениями:

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

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

Не работают задние USB а передние работают как по маслу в чем дело.
Здравствуйте.Включил комп и заметил что не работает принтер подумал что...

Syntax error 'for each'* statements are only available if source level 1.5
Программировал на университетском компе dct hf,jnfkj домой пришел выдает...


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

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

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