2013-03-18 73 views
0

我只是試圖檢索插入的行的唯一ID。爲什麼這個代碼不工作?INSERT查詢不返回對象

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()工作正常。該查詢也執行正常,並在數據庫中插入值,但我沒有得到一個對象返回。我只是得到一個布爾真。如果插入不返回一個對象,那麼我如何檢索插入的ID?

+0

dbconnect的代碼是什麼? – ITroubs 2013-03-18 17:37:11

+0

非對象意味着插入失敗並返回布爾值false。嘗試'$ con> error'(或者你的db lib的錯誤界面是什麼)。當然,這假定第5行是回波線。如果它在'$ res = $ con ...'上,那麼你根本沒有連接到數據庫。 – 2013-03-18 17:37:23

+0

'var_dump($ res);'show? – Stephan 2013-03-18 17:37:53

回答

0

如果我是正確的,以asume您DBConnection的使用簡單明瞭的MySQL的函數,則只需更換

echo $res->insert_id; 

有:

echo mysql_insert_id(); 
+0

我使用面向對象的mysqli格式。這仍然給了我同樣的錯誤。 – DarrenVortex 2013-03-19 15:26:37

+0

我編輯了問題並添加了返回的變量類型。這是一個真正的布爾值,而不是一個對象。 – DarrenVortex 2013-03-19 15:29:55

0

如果您正在使用PDO需要設置的取模式爲PDO :: FETCH_OBJECT ...此外,如果你的代碼返回一個數組,你可以簡單地將它轉換爲像這樣的對象$ res。

+0

我編輯了問題並添加了返回的變量類型。這是一個真正的布爾值。 – DarrenVortex 2013-03-19 15:30:58

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

+0

這和我的代碼有什麼區別? – DarrenVortex 2013-03-19 15:30:40

+0

我的代碼:mysqli-> insert_id,你的代碼:mysql-> insert_id。我認爲,mysql-> insert_id不存在。 – 2013-03-19 15:39:06

0

修改

echo $res->insert_id;

echo $con->insert_id;

這是在這一階段一個老問題,但最好的回答仍然模棱兩可,所以我想我會澄清,用實際問題中的變量名稱以及當前常用的PHP版本。

如果$con是一個mysqli對象,它可能是(而不是較舊的mysql - '我'代表'改進'),我的答案有效。因此,當執行其查詢方法時,它會在失敗時返回FALSE

返回FALSE失敗。對於成功的SELECT,SHOW,DESCRIBE或EXPLAIN查詢,mysqli_query()將返回一個mysqli_result對象。對於其他成功的查詢,mysqli_query()將返回TRUE。 [Source]

這解釋了錯誤消息,因爲查詢是INSERT

我來到這裏是因爲教科書指示我從結果中獲取insert_id而不是mysqli對象本身,但在過去或現在版本的MySQL的文檔中找不到任何理由。