我要插入:姓名,電子郵件,用戶名和由用戶通過HTML表單來執行此操作的一個PHP頁面密碼:插入HTML表單數據到MySQL數據庫和PHP [解決]
<?php
$name = $_POST["nm"];
$surname = $_POST["cgn"];
$email = $_POST["ml"];
$username = $_POST["nkn"];
$password = $_POST["psw1"];
// Connection to DB Server
$conn = mysqli_connect("localhost","root","","mydb");
// Check
if (!$conn){
echo "connection to database failed";
exit();
}
$query = "SELECT username FROM users WHERE username = '".$username."'";
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result,MYSQLI_NUM);
$n = mysqli_affected_rows($conn);
if($n >= 1){
echo "Username already exist";
}else{
$insert = "INSERT INTO users (name,surname,email,username,password) VALUES ('$name','$surname','$email','$username','$password')";
mysqli_query($conn,$insert);
?>
<p>User: <?php echo $username ?> successfully added.</p>
<?php
}
mysqli_close($conn);
?>
問題是這段代碼不能始終工作。有時候它會寫入「用戶:* *成功添加」,但在數據庫的表中卻沒有出現。我不知道爲什麼。 非常感謝您的幫助。 通過
SOLUTION:
使用mysqli_real_escape_string(connection,string)
再次感謝你在做插入SQL之前
你是什麼意思的「不總是工作」?也許插入語句查詢失敗。錯誤未被檢查,所以它輸出「用戶:XY成功添加」。 此外,您的代碼易受sql注入攻擊。 – Fracsi
當然,你是_always_獲得成功的消息 - 因爲你沒有檢查你的語句是否被成功執行。對於「有時」失敗的情況,我懷疑在那些用戶名包含特殊字符如f.e的情況下。 '' - 因爲在將它放入查詢之前,您也完全忽略了___以逃避您的數據,所以它會失敗。 – CBroe
我現在已經看到,如果名字或姓氏包含'它不起作用:數據不會出現在表格中 – user2467899