mysql_insert_id()没有返回值 -

时间:2013-03-30 12:56:04

标签: php mysql mysql-insert-id

我需要从数据库表中检索自动增量字段。我尝试了以下内容,但$id总是空的。

插入也有效。

我的表格如下: ID为int(9) NOT NULL auto_increment,

id设置为主要

我做错了什么?         $ conn = mysql_connect($ host,$ username,$ password);         mysql_select_db($ database,$ conn)或die("无法选择数据库");         包括" update_activity.php&#34 ;;         updateActivity("登录"," On Break");

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

编辑以显示我最近的尝试

5 个答案:

答案 0 :(得分:4)

已阅读所有评论以及您对每个评论的回复。 其中只有一个是可能的:

  1. 查询正常工作或
  2. 您没有获得生成的主键。
  3. 这两种情况永远都不可能。

    定义,您如何知道查询是否有效?你知道运行查询之前和之后的最大PK吗?插入是从其他地方或线程甚至其他用户发生的?查询是从代码还是从您的mysql客户端正常工作?

    要诊断问题,我们必须按正常方式进行。

    1. 在调用mysql_query之前转储生成的查询。
    2. 围绕查询调用包装错误检查系统,以便php可以告诉您查询是否有效。我相信通过这两个步骤,您将意识到问题的根本原因。

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

答案 1 :(得分:1)

@adelphia据我所知,在执行的查询中存在问题。 plz正确检查查询

答案 2 :(得分:0)

从这里提取的代码中借用一个主角:

http://php.net/manual/en/function.mysql-insert-id.php

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>

答案 3 :(得分:0)

插入查询的问题

$q = "INSERT INTO `breaks` (date, starttime, user) 
      VALUES ('".$date."', 
              '".$starttime."',
              '".$_SESSION['fname'] $_SESSION['lname']."')";

试试这个

并且主要用于使用大多数已弃用的“mysql”之类的东西,例如“mysql_insert_id()”

答案 4 :(得分:0)

存储您想要传递给数组或变量的值,并在insert查询中传递它。 它应该工作正常...