Php 将两条语句发布到数据库中

Php 将两条语句发布到数据库中,php,mysql,Php,Mysql,我正试图在我的sql数据库中插入两条语句。但当我点击send时,我看到只有第一条语句被发布 有人知道我的代码有什么问题吗?我如何解决 这是我的密码: $query1 = "INSERT INTO table1(firstname, lastname) VALUES (?, ?)"; $stmt1 = $db->prepare($query1); $stmt1->execute(array($firstname, $lastname)); $query2 = "INSERT INTO

我正试图在我的sql数据库中插入两条语句。但当我点击send时,我看到只有第一条语句被发布

有人知道我的代码有什么问题吗?我如何解决

这是我的密码:

$query1 = "INSERT INTO table1(firstname, lastname) VALUES (?, ?)";
$stmt1 = $db->prepare($query1);
$stmt1->execute(array($firstname, $lastname));

$query2 = "INSERT INTO table2(firstname, lastname) VALUES (?, ?)";
$stmt2 = $db->prepare($query2);
$stmt2->execute(array($firstname, $lastname));

您不能总是假设您的查询总是有效的。查询失败的原因有很多。无论何时执行查询,都必须检查是否一切正常。同时打开错误报告和检查错误日志。这个问题也应该在那里报告

下面的修改将有助于筛选出查询失败的问题

<?php
   error_reporting(E_ALL);

    $query2 = "INSERT INTO table2(`firstname`, `lastname`) VALUES (?, ?)";
    $stmt2 = $db->prepare($query2);
    if($stmt2->execute(array($firstname, $lastname))){//check if it saved
      echo 'Saved';
    } else {
      echo 'Failed Because '.$stmt2->error;//Oops something happened
    }
试试这个==>

$query1 = "INSERT INTO table1(firstname, lastname) VALUES (?, ?)";
$stmt1 = $db->prepare($query1);
$stmt1->bind_param("ss",$firstname, $lastname);
$stmt1->execute();

$query2 = "INSERT INTO table2(firstname, lastname) VALUES (?, ?)";
$stmt2 = $db->prepare($query2);
$stmt2->bind_param("ss",$firstname, $lastname);
$stmt2->execute();

检查此处的更多信息当您
准备
sql语句时,您可以在尝试执行sql之前检查一切是否正常,然后,通过为
execute
方法的结果分配一个变量,检查是否有成功的查询并继续执行下一个语句

Two very basic tables - identical except in name.

mysql> describe table1;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| firstname | varchar(50) | YES  |     | NULL    |       |
| lastname  | varchar(50) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+

mysql> describe table2;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| firstname | varchar(50) | YES  |     | NULL    |       |
| lastname  | varchar(50) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+




mysql> select * from table1;select * from table2;
+------------------------+-----------------------+
| firstname              | lastname              |
+------------------------+-----------------------+
| firstname59365bf480611 | lastname59365bf480613 |
+------------------------+-----------------------+
1 row in set (0.00 sec)

+------------------------+-----------------------+
| firstname              | lastname              |
+------------------------+-----------------------+
| firstname59365bf480611 | lastname59365bf480613 |
+------------------------+-----------------------+
1 row in set (0.00 sec)





$firstname=uniqid('firstname');
$lastname=uniqid('lastname');



$dbhost =   'localhost';
$dbuser =   'root'; 
$dbpwd  =   ''; 
$dbname =   '';
$db     =   new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );




$result = false;

$sql='insert into `table1` (`firstname`, `lastname`) values (?, ?)';
$stmt = $db->prepare( $sql );

if( $stmt ){

    $stmt->bind_param('ss',$firstname, $lastname );
    $result = $stmt->execute();
    $stmt->free_result();
    $stmt->close();

} else {
    exit( 'Error: Statement #1' );
}
if( $result ){

    $sql='insert into `table2` (`firstname`, `lastname`) values (?, ?)';
    $stmt = $db->prepare( $sql );

    if( $stmt ){

        $stmt->bind_param('ss',$firstname, $lastname );
        $result = $stmt->execute();
        $stmt->free_result();
        $stmt->close();

    } else {
        exit( 'Error: Statement #2' );
    }
}
$db->close();

检查第二个execute语句。收到错误谢谢@Akintunde抱歉我没有seen@Akintunde第二个语句在phpmyadminI中工作我收到一个浏览器错误“此页面不工作”我收到一个浏览器错误“此页面不工作”哎呀,忘记准备第二个语句了我正在尝试只运行第一个语句。但是仍然有页面错误。当我尝试我自己的代码时,它工作了,我把这个确切的代码集作为一个测试,它工作了(现在我已经包括了第二个
prepare
语句),这真的很累。我有完全相同的代码(使用backtricks、空格等),但仍然出现“Thispagenotworking”错误。我还尝试了另一个浏览器,但我有相同的
$query1
$query2
在我分别尝试时都能工作