2013-08-17 4 views
1

Я прочитал все, что нужно прочитать о подготовленных операторах, и им все еще не известно о порядке выполнения ... (многие используют другой порядок).Порядок выполнения для подготовленного оператора в php

Это хороший заказ?

$sql = 'SELECT * FROM ... WHERE ... = ?'; 

$conn = ...connection to database... 
$stmt = $conn->stmt_init(); 
$stmt->prepare($sql); 
$stmt->bind_param('i', $param); 
$stmt->execute(); 
$stmt->store_result(); // results are cached and accessed from memeory, therefore faster but use more memory 
$num_rows = $stmt->num_rows; // how many? (can only be use with store_result()) 
$stmt->bind_result($column, ...); 
$stmt->fetch(); // use in loop if necessary 
$stmt->free_result(); // use only with store_result() 
$stmt->close(); // close prepared statement 
$conn->close(); // close database 

ответ

0

Видимо, нет.

Хотя порядок у вас в порядке, многие используемые вами операторы являются излишними и бесполезными. Кроме того, не должно быть никакого связанного с подключением кода в контексте выполнения одного запроса.

include 'db.php'; // here goes connect 
$sql = 'SELECT * FROM ... WHERE ... = ?'; 
$stmt->prepare($sql); 
$stmt->bind_param('i', $param); 
$stmt->execute(); 
$stmt->bind_result($column, ...); 
$stmt->fetch(); 

достаточно. Обратите внимание: вам никогда не понадобится row_count, если у вас есть данные.