无法获取echo $ pdo-> lastInsertId();输出任何东西

时间:2013-06-04 12:53:45

标签: php mysql pdo

我正在编写一个脚本,需要将最后插入的ID回显到数据库,但我没有得到任何输出。

注意:当运行下面的代码时,它会将数据插入到数据库中但是在这样做之后我没有得到最后一行插入行的ID,如果有人能告诉我什么可能是歪斜我会非常感激和我提前谢谢你。

以下是具有明显原因而模糊的具体细节的代码;

<?php
error_reporting(E_ALL);
session_start();
require_once('connect_file.php');
$Data = $_REQUEST['json'];

$pdo = new PDO("mysql:host=xxxxxx;dbname=xxxxxx", xxxxxxxx xxxxxxxxx, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$query = "INSERT INTO `users` (`ID`,`Facebook_id`,`First_name`) VALUES ('', :xxxxx, :xxxxxxx)";

$sth = $pdo->prepare($query);

try {
$sth->execute(array(
    ":xxxxx" => $Data['id'],
    ":xxxxxxx" => $Data['first_name']
);

} catch (PDOException $e) {
    die($e->getMessage());
}

echo $pdo->lastInsertId();

?>

3 个答案:

答案 0 :(得分:0)

您应该阅读执行()的返回值,它是布尔值

我猜这是假的,这意味着你的请求中有错误。

在我看来,就像你在表用户中使用id自动增量一样。

如果是这种情况,我建议您查询摆脱 id columnn

$query = "INSERT INTO `users` (`Facebook_id`,`First_name`) VALUES (:xxxxx, :xxxxxxx)";
[...]
$sth->execute(array(
    ":xxxxx" => $Data['id'],
    ":xxxxxxx" => $Data['first_name'],
);

然后 lastInsertId()调用应返回您期望的ID。

答案 1 :(得分:0)

将此行添加到顶部

的引导代码中
ini_set('display_errors',1);

此代码位于底部

var_dump($pdo->lastInsertId());

$sth = $pdo->query("SELECT * FROM users order by id DESC LIMIT 1");
var_dump($sth->fetch());

答案 2 :(得分:0)

在您的查询中,为您的''分配零长度字符串ID

$query = "INSERT INTO {用户{1}}编号( {Facebook_id {1}}如first_name ,;

我假设您将使用AUTO_INCREMENT INT列,您可以指定NULL或0以获得正确数量的参数。

来自Documentation

  

没有为AUTO_INCREMENT列指定值,因此MySQL   自动分配序列号。你也可以明确地说   为列分配NULL或0以生成序列号。

, {用户{1}}编号) VALUES ('', :xxxxx, :xxxxxxx)" {Facebook_id {1}}如first_name $query = "INSERT INTO;