【发布时间】:2026-01-09 17:30:01
【问题描述】:
我刚开始使用 PHP 和 SQL,我正在尝试用 PHP 为网站制作帐户创建屏幕。为此,我创建了一个表单文件,其中包含对第二个文件的操作,表单中的输入数据应该插入到本地数据库的两个表中。 (我将 WAMP 与 phpMyAdmin 一起使用)-
我的(数据库)连接已启动,一切正常,我没有错误,当转到 phpMyAdmin 并使用虚拟数据执行 SQL 语句时它可以工作,但是当用户填写表格并单击下一步时它不会插入数据库?任何人都知道如何解决这个问题?
这是我当前的 php 代码,其中数据应该通过 SQL 语句插入到 2 个不同的表中:
<?php
$_SESSION['user'] = $_POST['name']; //user naam ophalen van vorige pagina en onthouden voor gehele sessie
$name= $_SESSION['user'];
$_SESSION['wachtwoord'] = $_POST['access'];
$access= $_SESSION['wachtwoord'];
$_SESSION['mail'] = $_POST['email'];
$email= $_SESSION['mail'];
$_SESSION['huisdier'] = $_POST['pet'];
$pet= $_SESSION['huisdier'];
$savenewuser = "BEGIN;
INSERT INTO user (id, naam, email, pass)
VALUES (NULL, '$name', '$email', '$access');
INSERT INTO preferences (id, huisdier)
VALUES (LAST_INSERT_ID(), '$pet');
COMMIT;
ROLLBACK;";
mysqli_query($con, $savenewuser);
$result = mysqli_query($con, $savenewuser);
if (!$result) {
echo "Error: Account could not be created, try again later.";
} else {
echo "Account has been created!";
}
mysqli_close($con);
?>
执行时,我确实收到消息“错误:无法创建帐户,请稍后再试。”当然。 - 我认为我必须更改有关 SQL 语句的某些内容,但我不确定具体如何。
【问题讨论】:
-
你需要把
session_start()放在代码的顶部。你没有分配给$name, $email, $access在你打开<?php标记error_reporting(E_ALL); ini_set('display_errors', 1);后立即添加错误报告到文件顶部。使用真正的MySQLi 错误消息。 -
@JayBlanchard 我已经做到了,这就是我文件最顶部的内容:
-
尝试改变 $result = mysqli_query($con, $savenewuser);而不是 $result = mysqli_query($con, $savenewuser) 或 die (mysqli_error($con)) ;
-
@JayBlanchard 我刚刚添加了您的建议并添加了 Lord_Linus 的建议。我目前得到的错误是:mysql_error() 期望参数 1 是资源
-
@lord_linus 在您的建议中添加。我得到的当前单个错误是:mysql_error() 期望参数 1 是资源