INSERT查询不返回对象

时间:2013-03-18 17:35:56

标签: php mysql

我只是想检索插入行的唯一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?

4 个答案:

答案 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>