我需要从数据库表中检索自动增量字段。我尝试了以下内容,但$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;
编辑以显示我最近的尝试
答案 0 :(得分:4)
已阅读所有评论以及您对每个评论的回复。 其中只有一个是可能的:
这两种情况永远都不可能。
定义,您如何知道查询是否有效?你知道运行查询之前和之后的最大PK吗?插入是从其他地方或线程甚至其他用户发生的?查询是从代码还是从您的mysql客户端正常工作?
要诊断问题,我们必须按正常方式进行。
mysql_query
之前转储生成的查询。 围绕查询调用包装错误检查系统,以便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查询中传递它。 它应该工作正常...