Ошибка Bind_param()
Когда я запускаю свой код, я получаю следующую ошибку:
Error: Call to a member function bind_param() on a non-object
Я погуглил эту проблему в течение нескольких часов и не могу понять, где проблема. Я знаю, что эта тема публикуется много раз, но я новичок в php и не понимаю, почему это не работает.
Это код, который я использую:
УЧЕБНЫЙ КЛАСС:
class Item {
private $iname;
function __construct($name)
{
$this->iname = $name;
}
public function addItem()
{
global $mysqli, $db_table_prefix;
$stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."items (
iname,
VALUES (
?
)");
$stmt->bind_param("s", $this->iname);
$stmt->execute();
$inserted_id = $mysqli->insert_id;
$stmt->close();
}
}
и размещение страницы формы:
require_once("models/config.php");
if(!empty($_POST))
{
$item_name = trim($_POST["iname"]);
$item = new Item($item_name);
$item->addItem();
}
require_once("models/header.php");
echo "
<body onload='initialize()'>
<div id='wrapper'>
<div id='top'><div id='logo'></div></div>
<div id='content'>
<h>Add new Item</h>
<div id='main'>
<div id='regbox'>
<form name='newItem' action='".$_SERVER['PHP_SELF']."' method='post'>
<p>
<label>Item description:</label>
<input type='text' name='iname' />
</p>
<input type='submit' name='Submit' value='Add Item'/>
</form>
</div>
</div>
</div>
</div>
</body>
</html>";
?>
1 ответ
Решение
У вас есть ошибка синтаксиса SQL:
INSERT INTO ".$db_table_prefix."items (
iname,
VALUES (
?
)
Это должно быть:
INSERT INTO ".$db_table_prefix."items (
iname)
VALUES (
?
)
Из-за синтаксической ошибки объект $stmt не создан, следовательно, ошибка Call to a member function bind_param() on a non-object
,
Всегда выводите сообщения об ошибках MySQL, если у вас есть проблемы:
echo $mysqli->error;