- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经挣扎了几个小时了。我正在创建一个新的用户表单,我需要将数据插入两个不同但连接的表中,但是我在这里发布的代码根本没有给出任何错误,事实上它正在插入第一个查询(# query1
) 到数据库,但不是 $query2
。
运行():
public function run($query, $params = []) {
try {
$this->error = null;
$res = $this->db->prepare($query);
$res->execute($params);
return $res;
} catch (PDOException $e) {
$this->error = $e->getMessage();
return null;
}
}
注册新用户():
function registerNewUser() {
try{
$query1 = "INSERT INTO utilizador(email, pass, dt_registo, tipo, activo)
VALUES (?,?,?,?,?)";
$res = $this->db->run($query1, [
$this->email,
$this->pw1,
$this->dt_registo,
$this->tipo,
$this->activo
]);
if(!empty($res)){
$insertedid = $res->lastInsertId();
$query2 ="INSERT INTO autor(nome, descricao, utilizador_id)
VALUES (?,?,?)";
$res2 = $this->db->run($query2, [
$this->nome,
$this->desc,
$insertedid
]);
if (!empty($res2)) {
echo 'sucesso';
return true;
} else {
$this->errors[] = $res2->getError();
return false;
}
}else{
// $this->errors[] = $res->getError();
// return false;
}
}
catch(PDOException $exception){
echo "Error: " . $exception->getMessage();
}
}
更新:
说我正在使用 jquery ajax 可能也很重要
$(document).on('submit', '#create-author-form', function() {
$.post("parts/novo_autor.php", $(this).serialize())
.done(function(data) {
$('#author-sucess').show();
});
return false;
});
P.S:假设数据一切正常,因为我之前已将其传递给另一个验证函数。
如有任何帮助,我们将不胜感激。
最佳答案
您的 $query2 有四个问号参数,但您只绑定(bind)三个值(nome、desc、insertedid)。
编辑:在 PDO 查询中,问号参数是与值绑定(bind)的占位符。问号参数的数量必须与要绑定(bind)的值的数量匹配,否则查询将失败,因为它需要更多值。
由于您想要使用 3 个值,请尝试将 $query2 更新为:
$query2 ="INSERT INTO autor(nome, descricao, utilizador_id)
VALUES (?,?,?)";
关于php - lastinsertId() 和第二个查询插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236427/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我已经挣扎了几个小时了。我正在创建一个新的用户表单,我需要将数据插入两个不同但连接的表中,但是我在这里发布的代码根本没有给出任何错误,事实上它正在插入第一个查询(# query1) 到数据库,但不是
这个查询有多错?我可以像这样插入多个查询吗?我可以像这样使用 lastInsertId 吗? $pdo = Database::connect(); $dflt = 'DEFAULT';
$query = $database->prepare("UPDATE table SET value = value WHERE value = '$value'"); $query_1->exec
作为类(class)项目,我正在使用 PHP/MySQL 开发一个小型网络应用程序。 当用户创建一个账户(账户类型必须是导师或学生)时,我按照以下逻辑将他插入到数据库中: 注意:我通过将 USER 设
为什么? try{ $st = $this->prepare("INSERT INTO thetable (a,b) VALUES (?,?)"); $st->execute(arra
当我得到 lastInsertId() 时,我的 pdo 连接发生了一些奇怪的事情:在 90% 的情况下它工作正常,但在 10% 的情况下它返回 0(我不知道它是真的 0 还是 FALSE) .但在
是否可以从方法中获取 lastInsertId(),如果可能的话,是否可以从特定表中获取值? 我尝试使用的方法在我的db.class.php public function getLastID(){
我对 lastInsertId() 函数的编写方式感到困惑。例如,我有以下使用 lastInsertId() 函数的查询。 $myinsert = $pdo->prepare("INSERT INTO
有没有办法(在单个查询中)插入多行,并且让某些行知道先前插入的行的 id? insert into my_table(contents, css) values ('some text', 'colo
这个问题对我来说又很重要。有没有人有解决办法? $conn = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', '********'); $co
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
这很奇怪。我正在运行一个仅包含单个 INSERT 的查询,前面有一个 SET 语句。查询看起来像这样: SET @discount:=(SELECT discount * :applyDiscount
在网上找到了一些关于AUTO_INCREMENT的相关资料,想请教各位。 这是我发现的一些与 AUTO_INCREMENT 插入相关的代码。我不确定该字段是否为 auto_increment,如果我应
我是一名初级程序员,正在对数据库应用程序进行非常简单的插入。 这是我的代码: $hostname = 'localhost'; $username = '***********'; $password
这个问题在这里已经有了答案: MySQL and PDO: Could PDO::lastInsertId theoretically fail? (2 个答案) 关闭 9 年前。 我有一个通过 A
我目前正在构建一个 symfony/doctrine 应用程序,其中一个模型具有以下结构: Session: columns: session_id: type: intege
我有以下 PHP 脚本,它运行良好,并使用 PDO 事务正确地将所有数据插入 MySQL,但仅在第一次运行时。初次运行后,我尝试再次插入相同的数据。第一个 lastInsertId 然后开始返回 0,
如果我有这段代码: prepare("INSERT INTO `table` (row) VALUES ('1')"); $q->execute(); $lastid = $sql->
我想知道 lastInsertId() 究竟是如何工作的。 Atm,我像这样使用它来获取插入行的 id,这样我就可以在代码的其他部分使用这个 id。例如: $stmt = $db->prepare('
我是一名优秀的程序员,十分优秀!