2016-11-05 141 views
0

嗨,大家好,我在000webhost上設置了一張表。我用id,姓名,用戶名,年齡和密碼的列來設置它。由於某些原因,當我運行寄存器的代碼時,用戶名不會顯示在表中,我不知道錯誤是什麼。下面是Register.php代碼:註冊/登錄未完成android/PHP

<?php 
$con = mysqli_connect("*****", "****", "*****", "****"); 

$name = $_POST["name"]; 
$age = $_POST["age"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 

$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 
mysqli_stmt_execute($statement); 

$response = array(); 
$response["success"] = true; 

echo json_encode($response); 
?> 
+1

'name,username' ---'siss'這裏有什麼不符。該命令很重要,http://php.net/manual/en/mysqli.error.php會告訴你。 –

+0

嘗試在查詢運行之前閱讀發佈的用戶名。 –

+0

@KoenHollander你在哪裏看到5?編輯:你刪除了。 –

回答

1

As I originally stated in comments:

你試圖使用i參數爲整數插入一個字符串。

綁定時的順序很重要。

您需要將當前參數更改爲ssis,同時確保年齡列確實是整數類型。

檢查查詢中的錯誤會告訴你有關它。

我也希望你不是存儲明文密碼。如果您打算繼續使用此功能,請使用password_hash()

對不起,是壞消息,但你會被砍死應該是這種情況。

在不使用安全密碼散列函數的情況下使用預準備語句並不能保證您的網站不會受到危害。

0

你綁定聲明有不正確的格式說明。改變這一行

mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 

mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password); 

那些符需要列和可變類型相匹配。 Si詮釋