mysql_insert_id($ result)没有返回ID

时间:2016-08-07 03:32:17

标签: php mysql

$SQL = "INSERT INTO primarySkills (primaryName) VALUES $surveySQL";
$result = mysql_query($SQL) or die ('Cannot execute query...'.$SQL);
$surveyID = mysql_insert_id($result);

上面的代码将正确输入表数据(primaryID,primaryName),但不返回使用id生成的mysql_insert_id()。请告诉我为什么id没有退回?

真正奇怪的是我之前在同一个脚本中使用此函数两次用于不同的表并且它在那里工作。我仔细检查了primaryID是auto_increment和主键。

祝福!

2 个答案:

答案 0 :(得分:2)

停止使用mysql函数
但是,在您的情况下问题可能是primaryID不是自动增量,也可能不是主键。要使mysql_insert_id()起作用,应该有一个自动增量列。同时更改查询。

$SQL = "INSERT INTO primarySkills (primaryName) VALUES ($surveySQL)";

并尝试使用mysql_insert_id()而不是mysql_insert_id($ result)。

答案 1 :(得分:1)

这是一个使用pdo的例子,因为从PHP 7开始删除了MYSQL函数。我没有测试你的sql命令。替换这些值:

localhost: your host
3306: your port if different
dbname: the name of your database
root: your username
'': the last parameter is your password.

<?php
$conn = new PDO('mysql:host=localhost:3306;dbname=testdb', 'root', '');
$conn->SetAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
$SQL = "INSERT INTO primarySkills (primaryName) VALUES (:test)";
$insert = $conn->prepare($sql);
$insert->bindValue(":test", $surveySQL, PDO::PARAM_STR);
$insert->execute();
$last_insert_id = $conn->lastInsertId();
?>

当您完成测试并准备投入生产后,请继续删除以下代码:

$conn->SetAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   

希望这有帮助。