我只是想检索插入行的唯一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()工作正常。查询也执行正常并在数据库中插入值,但我没有得到返回的对象。我只是得到一个布尔值true。如果Insert没有返回对象,那么如何检索插入的ID?
答案 0 :(得分: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&gt; close()尝试mysql_close($ con);
答案 1 :(得分:0)
如果我认为您的数据库连接使用普通和简单的mysql函数,那么只需替换
即可echo $res->insert_id;
使用:
echo mysql_insert_id();
答案 2 :(得分:0)
如果您正在使用PDO,则需要将获取模式设置为PDO :: FETCH_OBJECT ...此外,如果您的代码返回一个数组,您只需将其转换为对象,如此(对象)$ res。
答案 3 :(得分: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。[Source]
这解释了错误消息,因为查询是INSERT
。
我来到这里是因为教科书指示我从结果中获取insert_id而不是mysqli对象本身,但我在过去或现在的MySQL版本的文档中找不到任何理由。< / p>