簡體   English   中英

MYSQL錯誤#1452

[英]MYSQL Error #1452

請幫助,我已經處理了幾個小時,而且沒有任何進一步的進展。 對此進行了研究,直到我臉色蒼白,但對我來說卻無濟於事! 我正在嘗試用PHP制作注冊表。 我有一個包含所有用戶信息的用戶表和一個用於用戶名和密碼的帳戶表。 用戶表中的主鍵是用戶ID,這是帳戶表中的外鍵。 我正在嘗試將一種表單中的數據插入到兩個表中,但是我一直在獲取外鍵約束。 我的代碼發布在下面,任何幫助將不勝感激!

 <?php if(!$_POST['submit']){ echo "<table border=\\"0\\" cellspacing=\\"3\\" cellpadding=\\"3\\">\\n"; echo "<form method=\\"post\\" action=\\"register.php\\">\\n"; echo "<tr><td colspan=\\"2\\" align=\\"center\\">Registration Form</td></tr>\\n"; echo "<tr><td>First Name</td><td><input type=\\"text\\" name=\\"fname\\"></td></tr>\\n"; echo "<tr><td>Last Name</td><td><input type=\\"text\\" name=\\"lname\\"></td></tr>\\n"; echo "<tr><td>DOB</td><td><input type=\\"date\\" name=\\"dob\\"></td></tr>\\n"; echo "<tr><td>Contact Number</td><td><input type=\\"text\\" name=\\"contactno\\"></td></tr>\\n"; echo "<tr><td>Email Address</td><td><input type=\\"text\\" name=\\"email_address\\"></td></tr>\\n"; echo "<tr><td>Username</td><td><input type=\\"text\\" name=\\"username\\"></td></tr>\\n"; echo "<tr><td>Password</td><td><input type=\\"password\\" name=\\"password\\"></td></tr>\\n"; echo "<tr><td>Confirm</td><td><input type=\\"password\\" name=\\"confirm\\"></td></tr>\\n"; echo "<tr><td colspan=\\"2\\" align=\\"center\\"><input type=\\"submit\\" name=\\"submit\\" value=\\"Register\\"></td></tr>\\n"; echo "</form></table>\\n"; }else { $fname = protect($_POST['fname']); $lname = protect($_POST['lname']); $dob = protect($_POST['dob']); $contactno = protect($_POST['contactno']); $email_address = protect($_POST['email_address']); $username = protect($_POST['username']); $password = protect($_POST['password']); $errors = array(); if(!$horsename){ $errors[] = "Username is not defined!"; }else { $sql4 = "INSERT INTO 'users' (`fname`,`lname`,`dob`,`contactno`,`email_address`) VALUES ('".$fname."','".$lname."','".$dob."','".$contactno."','".$email_address."')"; $res4 = mysql_query($sql4) or die(mysql_error()); $sql4 = "INSERT INTO 'account' (username,password) VALUES ('".$username."','".md5($password)."')"; $res4 = mysql_query($sql4) or die(mysql_error()); echo "You have successfully registered with the username <b>".$username."</b> and the password of <b>".$password."</b>!"; } } ?> 

如果用戶ID在帳戶表中定義為外鍵,則在插入帳戶時應將其添加到插入查詢中。

艾瑪

一個忠告。 請不要使用這種代碼,因為它很容易發生SQL注入。 想象一下,當我輸入以下名稱時:

mark'); drop table users; --

執行的SQL語句將是

INSERT INTO users (`fname`,`lname`,`dob`,`contactno`,`email_address`) VALUES ('mark'); drop table users;

ObRef: http ://xkcd.com/327/

這將有效地刪除用戶表 除非您的protect()函數處理了此問題,否則,最好使用綁定變量: http : //php.net/manual/en/mysqli-stmt.bind-param.php

此外,您的電子郵件正則表達式無法捕獲所有可能的情況-請參見此處進行討論: 使用正則表達式來驗證電子郵件地址

PHP代碼中的錯誤:使用$ lname而不是lname

我會考慮使用框架來處理表單,插入,更新記錄(例如Yii,Laravel,Symfony,Zend,CakePHP等)來執行此操作-除非您的目標是學習如何進行低級處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM