我有一个像这样的Sql类:
class Sql extends PDO {
private $connection;
public function __construct() {
$this->connection = new PDO("mysql:host=localhost;dbname=myDB", "root", "root");
}
(...)
然后我尝试使用另一个类“user.php”在我的数据库中插入数据。使用“getConection”(sql类方法)。像这样:
class User {
private $iduser;
private $deslogin;
private $despassword;
private $datecad;
(getters & setters)
public function insert() { //query & select are a SQL class method
$sql = new Sql();
$sql->query("INSERT INTO tb_users (deslogin, despassword) VALUES (:LOGIN, :PASS))", array(
':LOGIN'=>$this->getDeslogin(),
':PASS'=>$this->getDespassword()
));
echo $sql->getConnection()->lastInsertId(); //getConnection is a Sql Class method that returns the private connection.
}
为什么我的回声总是返回0?
答案 0 :(得分:4)
这是因为您需要相同的连接对象关于插入查询以获取最后插入的ID ,但您正在创建新连接以获取最后插入的ID。这就是为什么你总是得到0的结果。
参见参考资料:
http://php.net/manual/en/pdo.lastinsertid.php#120618
修改强>
从您的代码中引用insert
中的问题您是否标记有一个额外的结束括号
将您的代码更改为:
$sql->query("INSERT INTO tb_users (deslogin, despassword) VALUES (:LOGIN, :PASS)", array(
':LOGIN'=>$this->getDeslogin(),
':PASS'=>$this->getDespassword()
)); //<------there must be only one bracket after::LOGIN, :PASS