插入查询没有返回一个对象


INSERT query doesn't return an object

我只是想检索插入行的唯一ID。为什么这段代码不能工作?

include('lib_connection.php');
$con = dbconnect();
$res = $con->query("insert into schools(school,city) values('CyFair High School','houston') ");
echo $res->insert_id;
$con->close();

我只得到:

Notice: Trying to get property of non-object in C:'Program Files (x86)'wampserver'www'hwsource'do_test.php on line 5

dbconnect()工作正常。查询也执行得很好,并将值插入到DB中,但是我没有得到返回的对象。我只是得到一个布尔值为真。如果Insert没有返回对象,那么我如何检索插入的ID?

Try

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");  //use your data
$mysqli->query("insert into schools(school,city) values('CyFair High School','houston') ");
echo $mysqli->insert_id
$mysqli->close();

更新:用mysql_close($con);

代替$con->close()

如果我是正确的假设,您的dbconnection使用普通和简单的mysql函数,那么只需替换

echo $res->insert_id;

:

echo mysql_insert_id();

如果您正在使用PDO,您需要将获取模式设置为PDO::FETCH_OBJECT…另外,如果你的代码返回一个数组,你可以简单地将它强制转换为对象,像这样(object) $res.

修改

echo $res->insert_id;

echo $con->insert_id;

在这个阶段这是一个老问题,但是最好的答案仍然是模棱两可的,所以我想我应该澄清一下,在问题中使用实际的变量名,以及通常当前实现的PHP版本。

我的答案工作,如果$con是一个mysqli对象,它可能是(而不是旧的mysql - 'i'代表'改进')。因此,当执行它的查询方法时,它

失败时返回FALSE。对于成功的SELECT, SHOW, DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。

这解释了错误消息,因为查询是INSERT

我来到这里是因为一本教科书指示我从结果中获取insert_id,而不是mysqli对象本身,但我在过去或当前版本的MySQL文档中找不到任何理由。