PDO将lastInsertId()返回为零(0),我不明白?

时间:2016-09-29 21:25:31

标签: php mysql pdo

这是我的代码? PDO总是将最后插入的id作为0返回,我尝试了所有内容。!

$this->db()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO inbox (sender,recever) VALUES ('1','2')";
$this->db()->exec($sql);        
$project_id =$this->db()->lastInsertId();

sql代码表:

CREATE TABLE inbox(
id int(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
sender int,
recever int
);

2 个答案:

答案 0 :(得分:-1)

试试这个

//set persistent connection
$con = new PDO("mysql:host=$this->host;dbname=$this->dbname",$this->use‌​r,$this->pass,array(‌​PDO::ATTR_PERSISTENT => TRUE));    
$stmt = $con->prepare("INSERT INTO inbox (sender,recever) VALUES ('1','2')");
$stmt->execute();
$id = $db->lastInsertId();

答案 1 :(得分:-1)

问题是您的<Window x:Class="WCSamples.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CloseCommand" Name="RootWindow" > <Window.CommandBindings> <CommandBinding Command="ApplicationCommands.Copy" CanExecute="CanExecuteHandler" /> </Window.CommandBindings> <StackPanel Name="MainStackPanel"> <Button Command="ApplicationCommands.Copy" Content="Copy" /> </StackPanel> </Window> private void CanExecuteHandler(object sender, CanExecuteRoutedEventArgs e) { // CanExecute logic in here. e.CanExecute = true; } 方法,每次调用它时都会创建一个新连接。

使用属性而不是这种方法。将PDO实例分配给db()属性,然后在需要PDO连接时使用它。

虽然您当前的实施非常糟糕,并且在其他答案中提供的解决方法无法保证正常工作。更不用说它不应该首先使用。