Advertisement
Advertisement
Advertisement
Advertisement
Advertisement
Read Time:
1 min
() translation by (you can also view the original English article)
Подготовленные выражения PHP (для доступа к базе данных) фантастические. Они не только помогают защитить ваши запросы к базе данных, но они также в частности более эффективны для больших продуктов. Тем не менее есть несколько проблем, которые могут сделать эти методы менее гибкими, чем мы надеялись. С одной стороны мы должны использовать метод bind_result
и передать определенное количество переменных. Однако что произойдет, когда этот код в пределах класса, и мы не будем немедленно знать как много переменных нужно передать? К счастью есть решение! Я покажу вам его в сегодняшнем видеоуроке.
Премиум участники: Скачайте видео (необходимо войти в систему)
Подпишитесь на нашу страницу YouTube для просмотра всех видеоуроков!
Итоговый код
1 |
|
2 |
<?php
|
3 |
|
4 |
function read() |
5 |
{
|
6 |
$parameters = array(); |
7 |
$results = array(); |
8 |
|
9 |
$mysql = new mysqli('localhost', 'root', 'root', 'db') or die('There was a problem connecting to the database'); |
10 |
$stmt = $mysql->prepare('SELECT body FROM posts') or die('Problem preparing query'); |
11 |
$stmt->execute(); |
12 |
|
13 |
$meta = $stmt->result_metadata(); |
14 |
|
15 |
while ( $field = $meta->fetch_field() ) { |
16 |
|
17 |
$parameters[] = &$row[$field->name]; |
18 |
}
|
19 |
|
20 |
call_user_func_array(array($stmt, 'bind_result'), $parameters); |
21 |
|
22 |
while ( $stmt->fetch() ) { |
23 |
$x = array(); |
24 |
foreach( $row as $key => $val ) { |
25 |
$x[$key] = $val; |
26 |
}
|
27 |
$results[] = $x; |
28 |
}
|
29 |
|
30 |
return $results; |
31 |
|
32 |
|
33 |
}
|
34 |
|
35 |
$results = read(); |
36 |
?>
|
37 |
<!DOCTYPE html>
|
38 |
|
39 |
<html lang="en"> |
40 |
<head>
|
41 |
<meta charset="utf-8"> |
42 |
<title>untitled</title> |
43 |
</head>
|
44 |
<body>
|
45 |
<?php foreach ($results as $row) : ?> |
46 |
|
47 |
<p> <?php echo $row['body']; ?> </p> |
48 |
<?php endforeach; ?> |
49 |
</body>
|
50 |
</html>
|
Advertisement
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Sign upAdvertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.