Php 将两条语句发布到数据库中
我正试图在我的sql数据库中插入两条语句。但当我点击send时,我看到只有第一条语句被发布 有人知道我的代码有什么问题吗?我如何解决 这是我的密码: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
$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
在我分别尝试时都能工作