2013-06-19 221 views
0

我要插入:姓名,電子郵件,用戶名和由用戶通過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之前

+2

你是什麼意思的「不總是工作」?也許插入語句查詢失敗。錯誤未被檢查,所以它輸出「用戶:XY成功添加」。 此外,您的代碼易受sql注入攻擊。 – Fracsi

+4

當然,你是_always_獲得成功的消息 - 因爲你沒有檢查你的語句是否被成功執行。對於「有時」失敗的情況,我懷疑在那些用戶名包含特殊字符如f.e的情況下。 '' - 因爲在將它放入查詢之前,您也完全忽略了___以逃避您的數據,所以它會失敗。 – CBroe

+0

我現在已經看到,如果名字或姓氏包含'它不起作用:數據不會出現在表格中 – user2467899

回答

2

逃生繩。

你可以試試mysql_real_escape_string()函數。

http://php.net/manual/en/function.mysql-real-escape-string.php

或者你的情況mysqli_real_escape_string()。

http://php.net/manual/en/mysqli.real-escape-string.php

此外,你應該檢查返回值,看看是否插入SQL是真正的成功。

$name = mysqli_real_escape_string($name); 
$surname = mysqli_real_escape_string($surname); 
$email = mysqli_real_escape_string($email); 
$username = mysqli_real_escape_string($username); 
$password = mysqli_real_escape_string($password); 
$insert = "INSERT INTO users (name,surname,email,username,password) VALUES ('$name','$surname','$email','$username','$password')"; 
mysqli_query($conn,$insert); 
+0

他使用mysqli,而不是mysql。此外,從5.5開始,mysql已被棄用。 – MisterBla

+0

非常感謝! – user2467899

+0

抱歉:-(但它不起作用!「mysqli_query」方法失敗 – user2467899

相關問題