2015-05-18 4 views
1

Я пытаюсь узнать о параметрах привязки в MySQL. Я пробовал этот тест, но получаю сообщение об ошибке «Вызов функции-члена bind_param() для не-объекта».Параметры привязки в mysql

Я делаю что-то неправильно?

Вот обновленный код:

$sql = "INSERT INTO users (field1, field2, field3) VALUES (?, ?, ?)"; 

connect(); 
$stmt = $conn->prepare($sql); 
$stmt->bind_param("sss", $value1, $value2, $value3); 
$value1 = "test1"; 
$value2 = "test2"; 
$value3 = "test3"; 
$stmt->execute(); 

Вот connect() функции:

function connect(){ 
    global $conn; 
    $conn = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
} 
+0

Пожалуйста, пост код вашего 'Конек)' функции (. Где вы устанавливаете '$ conn'? – Timo

+0

Вам не нужно связывать, вы можете просто передать переменные в массиве в execute. Как и я, я не думаю, что связывание может расшифровать «тип» из значений отдельных переменных. – chris85

+0

Используете ли вы 'mysqli_ *' или 'PDO'? –

ответ

2

Чтобы связать Params в подготовленном запросе в PDO, передать массив, содержащий ваш Params на выполнение функции:

$result = $conn->prepare($sql); 
$result->execute(array($value1, $value2, $value3)); 

UPDATE

Для Mysqli версии:

connect(); 
$result = $conn->prepare($sql); 
$result->bind_param('sss', $value1, $value2, $value3); 
$result->execute(); 

См http://php.net/manual/en/mysqli-stmt.bind-param.php

+0

Как насчет этого: http://www.w3schools.com/php/php_mysql_prepared_statements.asp – thinkofacard

+0

Разве это не то, что я делаю? Является ли w3school неправильным? – thinkofacard

+0

Нет, это не так. Существует несколько способов привязки параметров, вы просто смешиваете два пути. Вы можете, конечно, использовать 'bindParam', если хотите, но не' bind_param', который является функцией mysqli. – vard

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