这是我第一次这样做。 当涉及内部连接两个表时,我遇到了许多问题。 我想要做的是当用户登录他们的帐户时,在表单字段中显示/回显两个表中的详细信息。 我可以成功地从一个表中回显细节,当我尝试内部加入第二个表时,网页字面上没有显示任何内容,即使我有内容。
这是出现的错误
“致命错误:未捕获错误:在/Applications/MAMP/htdocs/PhpProject2/customer/Cus_Account.php:24中对boolean上的成员函数fetch_array()调用堆栈跟踪:/ Applications /中抛出#0 {main}第24行的MAMP / htdocs / PhpProject2 / customer / Cus_Account.php“
第24行是:
$row = $results->fetch_array(MYSQLI_BOTH);
PHP
$results = $dbc->query("SELECT Cus_Register.Cus_Email FROM Cus_Register INNER JOIN
Cus_acc_details ON Cus_Register.Cus_Email = Cus_acc_details.Cus_Email WHERE
Cus_acc_details WHERE Cus_Email='$user'");
$row = $results->fetch_array(MYSQLI_BOTH);
session_start();
$_SESSION['Cus_Email'] = $row['Cus_Email'];
?>
<!-- update database-->
<?php
if(isset($_POST['Update'])){
$UpdateFname = $_POST['fname'];
$UpdateLname = $_POST['Lname'];
$UpdateEmail = $_POST['email'];
$UpdatePhone = $_POST['phone'];
}
$sql = $dbc->query("UPDATE Cus_Register,Cus_acc_details SET CUS_Fname = ' $UpdateFname', CUS_Lname = ' $UpdateLname', CUS_Email = ' $UpdateEmail', Cus_Phone = ' $UpdatePhone' WHERE CUS_Email = ")
?>
HTML
<section class="container">
<form id="myform " class="Form" method="post" action="Cus_Account.php?c_id=<?php echo $c_id ?>" accept-charset="utf-8">
<!-- <div id="first">-->
<input type="text" id="fname" name="fname" value="<?php echo $_SESSION['CUS_Fname']; ?>" required>
<input type="text" id="lname" name="lname" value="<?php echo $_SESSION['CUS_Lname']; ?>" required>
<input type="text" id="email" name="email" value="<?php echo $_SESSION['Cus_Email']; ?>" required>
<input type="number" id="phone" name="phone" value="<?php echo $_SESSION['CUS_Phone']; ?>" required>
<input type="submit" name="Update" value="Update">
<br>
</form>
答案 0 :(得分:2)
您的选择语句是:
SELECT Cus_Register.Cus_Email
FROM Cus_Register INNER JOIN
Cus_acc_details
ON Cus_Register.Cus_Email = Cus_acc_details.Cus_Email
WHERE Cus_acc_details WHERE Cus_Email='$user';
这不是有效的SQL。我怀疑你打算这样做:
SELECT r.Cus_Email
FROM Cus_Register r INNER JOIN
Cus_acc_details d
ON r.Cus_Email = d.Cus_Email
WHERE r.Cus_Email = '$user';
单个SELECT
只有一个WHERE
子句。
您的UPDATE
也是可疑的,因为它有两个用逗号连接的表格。但是,在这种情况下,我无法分辨出正确的逻辑。