0

我只是想检索插入行的唯一 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() 工作正常。该查询也可以正常执行并将值插入数据库中,但我没有得到返回的对象。我只是得到一个布尔真值。如果 Insert 没有返回对象,那么我该如何检索插入的 ID?

4

4 回答 4

1

尝试

$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();

更新: 而不是 $con->close() 尝试 mysql_close($con);

于 2013-03-18T17:48:37.107 回答
0

如果我认为您的 dbconnection 使用简单明了的 mysql 函数是正确的,那么只需替换

echo $res->insert_id;

和:

echo mysql_insert_id();
于 2013-03-18T17:47:34.013 回答
0

如果您使用的是 PDO,您需要将获取模式设置为 PDO::FETCH_OBJECT...此外,如果您的代码返回一个数组,您可以简单地将其转换为像这样的对象(对象)$res。

于 2013-03-18T17:48:00.490 回答
0

修正

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 的文档中找不到任何理由。

于 2017-04-30T08:59:30.683 回答