2014-09-25 2 views
0

Здравствуйте, я хотел бы, чтобы вставить все из $ _SESSION в строки $ ключ со значением $ значение так что-то вроде foreach ($_SESSION as $key => $value) {} Imlooking на: Best way to INSERT many values in mysqli? имя строк в MySQLi такое же, как имена данного ключа $ .I нужно вставить каждый $ значение в $ ключа (строка)Простой объект SQLI вставки

Код:

$query = "INSERT INTO testtable VALUES (?)"; 
$stmt = $dbc->prepare($query); 
$stmt->bind_param("s", $key); 
$mysqli->query("START TRANSACTION"); 
foreach ($_SESSION as $key => $value) { 
    $stmt->execute(); 
} 
$stmt->close(); 
$mysqli->query("COMMIT"); 

ответ

0

Ваш запрос содержит синтаксическую ошибку, которую вы никогда не беспокоили проверки:

$query = "INSERT INTO testtable podatki VALUES (?)"; 
         ^^^^^^^^^^^^^^^^^ 

Если это на самом деле имя таблицы, то он должен быть заключен в обратные кавычки:

$query = "INSERT INTO `testtable podatki` VALUES (?)"; 
         ^-----------------^ 

если podatki это имя поля, то оно должно быть

$query = "INSERT INTO testtable (podatki) VALUES (?)"; 
           ^-------^ 

А также никогда не предположить, что БД операция преуспела. ВСЕГДА проверять на наличие ошибок:

$stmt = $dbc->prepare($query); 
if (!$stmt) { 
    die(mysqli_error($dbc)); 
} 
+0

извините, мое плохое .. должно быть «ВСТАВИТЬ В тестовый стол VALUES (?)»; – Newb

0

ошибка говорит, что вы пытаетесь вызвать функцию-член, а именно bind_param(), на не-объект.

Это означает, что эта строка:

$stmt = $dbc->prepare($query); 

не удается,

и, таким образом, у вас есть неправильное возвращаемое значение, установленное в качестве значения $stmt

так, когда вы пытаетесь call bind_param не удается, потому что $stmt - это не тот тип объекта, который он ожидал.

+0

Любая идея waht делать? Я не понимаю код. программирование объектов в php мне смущает – Newb

+0

@Newb Добавьте строку после '$ stmt = $ dbc-> prepare ($ query);' с этим кодом: 'var_dump ($ stmt); умереть "и отредактировать свой вопрос, чтобы опубликовать результаты. –

+0

bool (false) - это то, что я получаю. $ dbc - это $ dbc = new mysqli (материал ..); правильно? Можете ли вы также проверить логику этого кода? – Newb

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