为什么mysql_insert_id()返回0?

时间:2012-06-22 20:36:58

标签: php mysql

当我运行此代码时

$sql_select = "INSERT INTO `database`.`table`(Columns) VALUES (Values)... ";
$mysqlid = mysql_insert_id($sql_select->db);
echo ($mysqlid);

我收到错误消息

mysql_insert_id(): supplied argument is not a valid MySQL-Link 

我尝试过这种变化;

$mysqlid = mysql_insert_id();
echo ($mysqlid);

但是返回0,根据文档,这意味着找不到auto_increment字段。我唯一能想到的是我没有调用$ sql_select中的auto_increment列,但是那里有一个auto_increment列;会影响mysql_insert_id的行为吗?

4 个答案:

答案 0 :(得分:5)

您需要先实际运行查询:

$sql= "INSERT INTO `database`.`table`(Columns) VALUES (Values)...";
$result = mysql_query($sql);

然后在那之后:

$id = mysql_insert_id();
echo $id

如果您还有问题,请告诉我。

答案 1 :(得分:4)

这是因为$sql_select->db 不是有效的MySQL链接

您正在寻找的是这样的:

$sql_select = "INSERT INTO `database`.`table`(Columns) VALUES (Values)... 
$result = mysql_query($sql_select);
$mysqlid = mysql_insert_id($result->db);

$result是一个有效的MySQL资源。

另外,不要忘记创建了mysql connection

注意:虽然我使用original MySQL driver的代码,但不建议使用它。相反,您想使用MySQLiPDO_MySQL

答案 2 :(得分:3)

您需要运行查询:

if($result = mysql_query($sql_select)){
    $mysqlid = mysql_insert_id();
    echo $mysqlid;
}

干杯

答案 3 :(得分:2)

mysqli的连接是一个对象......所以试试这个......

$mysqli = new mysqli("localhost", "user", "password", "dbname");

插入后尝试这个..

echo $mysqli->insert_id;