2016-09-19 3 views
-1

Я создал эту функцию для выбора данных из таблицы базы данных:PHP и MySQLi подготовленного заявление

function data_users($dbc,$id){  
    $q = "SELECT * FROM users WHERE id = $id"; 
    $r = mysqli_query($dbc,$q); 
    return $r; 
} 

Как я могу создать ту же самую функцию, но на этот раз с подготовленным заявлением? После этого обычно вызывается такая функция:

$result = data_users($dbc,$id); 
while ($users_info = mysqli_fetch_assoc($result)) { 
    //do something 
} 

Могу ли я использовать тот же метод после изменения?

+1

Я не понимаю ваш вопрос. –

+0

Я прочитал его и знаю, как создать подготовленный оператор, но я не знаю, как его преобразовать в функцию, поэтому я могу называть его несколько раз @jeroen –

ответ

0
if ($stmt = mysqli_prepare($db, "SELECT * FROM users WHERE id = ?")) { 
mysqli_stmt_bind_param($stmt, "i", $id); 
mysqli_stmt_execute($stmt); 
mysqli_stmt_bind_result($stmt, $result); 
mysqli_stmt_fetch($stmt); 
+0

, можете ли вы отправить его в процедурный стиль, большое спасибо за ваша помощь –

+0

Кто бы ни подтвердил этот ответ, пожалуйста, отмените свой голос. этот код не будет работать. –

+0

посмотри на мой ответ. но могу ли я дать вам совет, в следующий раз прочитав документацию, пожалуйста, это не служба кодирования – Infated

1

Обратите внимание, что вы можете написать такую ​​функцию только для вашего PHP mysqli, построенного на драйвере mysqlnd. В таком случае вы можете написать это:

function data_users($dbc,$id){  
    $sql = "SELECT * FROM users WHERE id = ?"; 
    $stmt = $dbc->prepare($sql); 
    $stmt->bind_param("i",$id); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 
    return $result->fetch_assoc(); 
} 

обратите внимание, что вы не должны бояться синтаксиса объекта, это действительно просто.

+0

Благодарим вас за помощь, могу ли я использовать синтаксис объекта, если я использую (mysqli_connect) функцию для подключения к базе данных, или мне нужно изменить ее на (new mysqli) –

+0

Да, вы можете использовать любой синтаксис, который вам нужен, это не имеет значения. –

+1

Какова будет ваша реальная проблема - наличие драйвера mysqlnd. если он недоступен, лучше забыть mysqli и начать использовать PDO –

Смежные вопросы