【问题标题】:MYSQL - Inner Join problemsMYSQL - 内部连接问题
【发布时间】:2016-03-23 02:09:28
【问题描述】:

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

这是出现的错误

“致命错误:未捕获的错误:调用 /Applications/MAMP/htdocs/PhpProject2/customer/Cus_Account.php:24 中布尔值的成员函数 fetch_array() 堆栈跟踪:在 /Applications/ 中抛出 #0 {main} MAMP/htdocs/PhpProject2/customer/Cus_Account.php 第 24 行"

第 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>

【问题讨论】:

  • = ' $ 中有一大堆空格,这些空格算作字符,WHERE CUS_Email = ") 似乎不完整。
  • 请注意,您的查询对 SQL 注入开放

标签: php mysql forms inner-join


【解决方案1】:

您的选择语句是:

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 也很可疑,因为它有两个表以逗号连接。但是,我不知道在这种情况下正确的逻辑是什么。

【讨论】:

  • 整行$sql = $dbc-&gt;query("UPDATE Cus_Register,Cus_acc_details SET CUS_Fname = '... 在这里不成立。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多