MYSQL - 内部加入问题

时间:2016-03-23 02:09:28

标签: php mysql forms inner-join

这是我第一次这样做。 当涉及内部连接两个表时,我遇到了许多问题。 我想要做的是当用户登录他们的帐户时,在表单字段中显示/回显两个表中的详细信息。 我可以成功地从一个表中回显细节,当我尝试内部加入第二个表时,网页字面上没有显示任何内容,即使我有内容。

这是出现的错误

  

“致命错误:未捕获错误:在/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>

1 个答案:

答案 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也是可疑的,因为它有两个用逗号连接的表格。但是,在这种情况下,我无法分辨出正确的逻辑。