1

データベース テーブルから自動インクリメント フィールドを取得する必要があります。私は次のことを試しましたが、$id常に空です。

インサートも効いています。

私のテーブルは次のとおりです: idint(9) NOT NULL auto_increment,

idプライマリとして設定されます

私は何を間違っていますか?$conn = mysql_connect($host,$username,$password); mysql_select_db($database, $conn) or die( "データベースを選択できません"); 「update_activity.php」を含めます。updateActivity("ログイン中", "休憩中");

    $date = date("m/d/y"); $starttime = time();
    $sesh = $_SESSION['fname']." ".$_SESSION['lname'];
    $q = "INSERT INTO `breaks` (date, starttime, user) VALUES ('".$date."', '".$starttime."', '".$sesh."')";

    $query = mysql_query($q, $conn);
    $id = mysql_insert_id($conn);

    echo var_dump($id); exit;

最近の試行を表示するように編集しました

4

5 に答える 5

4

与えられたすべてのコメントとそれぞれへの返信を読みました。次のいずれかのみが可能です。

  1. クエリが正しく機能するか、または
  2. 生成された主キーを取得していません。

これらの両方が真実になることは決してありません。

クエリが機能していることをどのように知ることができますか? 実行中のクエリの前後の最大 PK を知っていますか? 挿入は他の場所やスレッド、あるいは他のユーザーから行われていますか? クエリはコードまたは mysql クライアントから正しく機能していますか?

問題を診断するには、通常の方法を使用する必要があります。

  1. を呼び出す前に、生成されたクエリをダンプしますmysql_query
  2. クエリ呼び出しにエラー チェック システムをラップして、クエリが機能したかどうかを php が判断できるようにします。この 2 つの手順だけで、問題の根本的な原因がわかるはずです。

    error_reporting(E_ALL);
    ini_set('display_errors','on');
    
    echo "before calling: $q\n";
    $query = mysql_query($q, $conn);
    if(!$query)
    {
        echo "Error:" . mysql_error($conn);
        return;
    }
    echo " generated id:" . mysql_insert_id($conn);
    
于 2013-03-30T13:36:51.273 に答える
0

渡したい値を配列または変数に格納し、挿入クエリに渡します。それはうまくいくはずです...

于 2013-03-30T13:21:11.563 に答える