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() は正常に動作します。クエリも正常に実行され、値が DB に挿入されますが、オブジェクトが返されません。私は単にブール値を真にします。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.

mysqli オブジェクト自体ではなく、結果から insert_id を取得するように指示された教科書の結果としてここに来ましたが、MySQL の過去または現在のバージョンのドキュメントでこれを正当化する理由を見つけることができません。

于 2017-04-30T08:59:30.683 に答える