我有一个大班级来处理来自表单的数据。
最后一个方法应该将数据插入到数据库中,但它始终以“警告:mysqli_query()期望参数1为mysqli,在...等中给出的对象等”
结束。我找到了许多有关此问题的帖子,但没有人帮我解决,我发布了db类的代码:
class connessionedb {
// parametri per la connessione al database
private $nomehost = "host";
private $nomeuser = "user";
private $password = "pass";
private $database = "database";
// funzione per la connessione a MySQL
public function Connessione() {
$conn = new mysqli($this->nomehost, $this->nomeuser, $this->password, $this->database);
if ($conn->connect_errno) {
echo "Failed to connect to MySQL: " . $conn->connect_error;
} else {
echo "connessione stabilita";
return $conn;
}
}
}
Connection properli适合我,我测试了它。
现在调用连接和插入的最后一个方法(现在的查询是一个简短的形式,但我有一个43字段表单来管理):
公共函数InsertDB(){
$connetti = new connessionedb();
$connetti->Connessione();
$query = "INSERT into anagrafica (old_id,
VALUES ($this->old_id)";
$inserisci = mysqli_query($connetti, $query);
if (!$inserisci) {
die('Error:' . mysqli_error($connetti));
} else {
return $this->inserito = true;
}
}
和php实现文件(尚未完成,但理论上足以插入数据):
<?php
session_start();
require_once '/classes/class.connessionedb.php';
require_once '/classes/class.IscrittiFormCheck';
header('Content-type: text/html; charset=utf-8');
$form = new Iscrittiformcheck();
if (!$form->checkAll()) {
exit();
} else {
$form->InsertDB();
}
?>
结果是:
Tutti i campi del form sono stati inviati correttamente。
connessione stabilita 警告:mysqli_query()期望参数1为mysqli,对象在C:etcetc第407行中给出
警告:mysqli_error()期望参数1为mysqli,对象在C:etcetc第409行中给出
以下两行:
$inserisci = mysqli_query($connetti, $query);
[---]
die('Error:' . mysqli_error($connetti));
这是我应该传递连接标识的2行。
非常感谢你的帮助!
答案 0 :(得分:0)
$ connetti只是你的情况下的一个对象,但不是mysqli的对象。您正在使用函数Connessione()获取mysql对象,因此您需要将其分配给变量以使用sql查询。
public function InsertDB() {
$connetti = new connessionedb();
$dbc = $connetti->Connessione();
$query = "INSERT into anagrafica (old_id) VALUES (".$this->old_id.")";
$inserisci = mysqli_query($dbc, $query);
if (!$inserisci) {
die('Error:' . mysqli_error($dbc));
} else {
return $this->inserito = true;
}
}