【问题标题】:mysql_insert_id() not returning a value -mysql_insert_id() 没有返回值 -
【发布时间】:2013-03-21 01:41:29
【问题描述】:

我需要从我的数据库表中检索自动增量字段。我尝试了以下但$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;

编辑显示我最近的尝试

【问题讨论】:

  • 哦,我的天哪..我知道所有关于mysqli的事情,谢谢你的十亿提醒
  • 有人得到答案吗?
  • 打印出你正在生成的 SQL,并直接在数据库中运行它——那么它可以工作吗?
  • @adelphia 据我所知,要么是执行的查询有问题,要么是因为函数已失效。

标签: php mysql mysql-insert-id


【解决方案1】:

从此处提取的代码中借用线索:

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

【讨论】:

    【解决方案2】:

    插入查询的问题

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

    试试这个

    主要是你使用了大部分已弃用的“mysql”,比如“mysql_insert_id()”

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 查询没问题。它正在插入表格中。
      • 我的意思是还有其他方法可以改进它。
      【解决方案4】:

      将您要传递的值存储到数组或变量中,并将其传递到插入查询中。 那么它应该可以正常工作...

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
      • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。一旦你有足够的reputation,你也可以add a bounty引起更多的关注。
      【解决方案5】:

      已阅读所有给出的 cmets 以及您对每个 cmets 的回复。 只有其中一种是可能的:

      1. 查询正常工作或
      2. 您没有获得生成的主键。

      这两个永远不可能是真的。

      定义,您如何知道查询正在工作?你知道运行查询前后的最大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);
        

      【讨论】:

        猜你喜欢
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 2013-04-13
        • 2016-12-13
        • 2023-03-14
        • 1970-01-01
        • 2013-12-01
        相关资源
        最近更新 更多