【发布时间】:2014-12-28 17:26:55
【问题描述】:
我必须将客户和/或经理注册到数据库中。我只有一张信息表,唯一的区别是身份证号(对经理有效)。客户应将此表格留空。我试图仅使用if 语句保存数据(如果为空白,则将信息保存在costumer 表中。如果不是,则保存在manager 中)。我在课堂上没有看到过这种情况,所以我不确定是否可行。
是否可以使用if 语句插入数据?我的意思是,我有两个不同的表格,但只有一个表格(其中一个表格将决定数据将保存在哪个表格中。
manager 表中的数据正常,但是当我尝试将数据插入costumer 时,它不起作用。我不确定我是否可以使用它。
if($_SESSION['id'] != null){
$sql = "INSERT INTO manager (id,magname,maglname,maguser,magpass) VALUES (?, ?, ?, ?, ?);";
$sth = $DBH->prepare($sql);
$sth->bindParam(1, $_SESSION['id'], PDO::PARAM_INT);
$sth->bindParam(2, $_SESSION['firstname'], PDO::PARAM_INT);
$sth->bindParam(3, $_SESSION['secondname'], PDO::PARAM_INT);
$sth->bindParam(4, $_SESSION['username'], PDO::PARAM_INT);
$sth->bindParam(5, $_SESSION['password'], PDO::PARAM_INT);
$sth->execute();
}
if(empty($_SESSION['id']){
$sql = "INSERT INTO costumer (fisrtname,lastname,username,password) VALUES (?, ?, ?, ?);";
$sth = $DBH->prepare($sql);
$sth->bindParam(1, $_SESSION['firstname'], PDO::PARAM_INT);
$sth->bindParam(2, $_SESSION['lastname'], PDO::PARAM_INT);
$sth->bindParam(3, $_SESSION['username'], PDO::PARAM_INT);
$sth->bindParam(4, $_SESSION['password'], PDO::PARAM_INT);
$sth->execute();
}
【问题讨论】:
-
您面临的问题是什么?你的插入会抛出错误还是没有插入任何东西?
-
改用
isset()和empty(),和/或else{...} -
仅供参考:
== null不只是检查变量是否为NULL,因为它是loose comparison。它还会检查变量是FALSE、0、空数组还是空字符串。 -
实际上它没有产生任何错误,只是当 SESSION['id'] 为空时它没有保存在我的数据库中。
-
您应该向我们展示您的完整或更多代码。另外,请确保您的列允许 NULL。另外,您确实启动了会话,并且在所有使用会话的页面内?