У меня есть сайт, на котором я подключаюсь к базе данных mySQL, чтобы сделать несколько запросов обычным способом. Я не делаю ничего более сложного, чем:PHP - начало подготовленных заявлений, но они кажутся неудобными
$result = mysql_query('SELECT * FROM table WHERE condition = "'.mysql_real_escape_string($_POST['condition']).'"');
$row = mysql_fetch_assoc($result);
echo $row['var1'].' '.$row['var2'];
И это работает. Но я читал о подготовленных заявлениях, и они, похоже, предлагают больше безопасности, и я хотел бы использовать их и заменять мои вызовы базы данных некоторыми подготовленными операторами, поэтому я рассматривал класс mysqli.
Но это похоже на гораздо больше кода для достижения того же. Я понимаю, что я должен был бы сделать это, чтобы получить выше:
$stmt = $db->stmt_init();
if($stmt->prepare('SELECT * FROM table WHERE condition = ?')) {
$condition = $_POST['condition'];
$stmt->bind_param('s', $condition);
$stmt->execute();
$stmt->bind_result($var1, $var2, ...);
if ($stmt->fetch()) {
echo $var1 . ' - ' . $var2;
}
}
Так что, похоже, как ад гораздо больше кода, и немного сложнее управлять. Я не понимаю, как их использовать или есть более короткий способ делать «нормальные» вещи PHP:
- Заполнение $ row, представляющее собой одну строку из базы данных.
- Цитирование по строкам и заполнение строки $ рядом со следующей строкой.
- Обычные запросы UPDATE.
Выше все хорошо и быстро сделать «нормально», но похоже, что они будут принимать еще много строк, используя подготовленные заявления.
Может быть, вы должны дать этому прочитанный http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/ – Gustav
@Gustav Я бы принять эту ссылку и соответствующие выдержки в качестве ответа ... –