bind_param (), похоже, не работает

У меня есть следующий код:

<?php $dbhost = 'localhost'; $dbuser = 'user'; $dbpass = 'password'; $db = new mysqli($dbhost, $dbuser, $dbpass, 'images_db'); if($db->connect_errno > 0){ die('Unable to connect to database [' . $db->connect_error . ']'); } else{ echo "Connected to database"; } //filename, mime_type and file_size are columns in the table images $stmt = $db->prepare("INSERT INTO images (filename, mime_type, file_size) VALUES (?, ?, ?)"); $string1 = 'string 1'; $string2 = 'string 2'; $stmt->bind_param('ssi', $string1, $string2, 123); $stmt->execute(); $stmt->close(); $mysqli->close(); ?> 

Когда я выполняю код, в базу данных mysql ничего не добавляется. Но когда я прокомментирую строку

 $stmt->bind_param('ssi', $string1, $string2, 123); 

и вставляем строковые и целочисленные значения непосредственно в оператор $ db-> prepare (заменяя вопросительные знаки), все работает хорошо, а строка добавляется в таблицу базы данных.

Что я делаю неправильно в строке bind_param, которая препятствует добавлению новой строки в базу данных?

Related of "bind_param (), похоже, не работает"

mysqli_stmt_bind_param принимает переменные (по ссылке). Вы не можете использовать литералы. Измените свой код на

 $fileSize = 123; $stmt->bind_param('ssi', $string1, $string2, $fileSize); 

Попробуйте назначение переменной после bind_param (). Он передается по ссылке. Так что это будет работать и после этого.

 $stmt = $db->prepare("INSERT INTO images (filename, mime_type, file_size) VALUES (?, ?, ?)"); $stmt->bind_param('ssi', $string1, $string2, $num); $string1 = 'string 1'; $string2 = 'string 2'; $num=123; $stmt->execute();