尷尬的問題在這裏,因爲它顯然是如此簡單的事情出錯了。 (對於任何聲稱'重複'的人,我已經花了3個小時在這裏查找相關問題並將許多答案付諸實踐,但無濟於事,因此需要這個問題。)查詢沒有發送到數據庫
我在使用PHP和MySQL製作用戶註冊表單的過程中,一切都很好,但是,我沒有看到數據庫中的值?所以顯然它不提交罰款。
問題
爲什麼不將它提交?
我已經做了var_dump($ _ POST);其結果是:
array(4) { ["name"]=> string(14) "Foo Bar" ["email"]=> string(18) "[email protected]" ["password"]=> string(8) "foobar123" ["submit"]=> string(8) "Register" }
我也做了print_r($ query);在查詢什麼是通過,結果是:
INSERT INTO user_info (name, email, password) VALUES ('Foo Bar', '[email protected]', '$2y$10$36UQIGc6OwFrNs/TBfc6letRlrrdRGGoj.lh65puJElDJER08ozQe')
表user_info已存在,我的連接到數據庫是好的。 我試過對列名使用後向逗號,我也試過不使用逗號作爲值,但似乎沒有提交。
下面的代碼:
HTML -
<form method="post" name="register-form" action="database.php">
Name: <input type="text" name="name"><br>
Email: <input type="email" name="email"><br>
Password: <input type="password" name="password">
<input type="submit" name="submit" value="Register" />
</form>
PHP -
<?php
require 'dbconnect.php';
function registerUser() {
$username = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_BCRYPT);
$mysqli = mysqli_init();
$query = "INSERT INTO user_info (name, email, password) VALUES ('$username', '$email', '$hash')";
$mysqli->query($con, $query); //$con referenced in dbconnect to connect to db
var_dump($_POST);
print_r($query);
}
if(isset($_POST['submit']) === TRUE){
registerUser();
}
?>
dbconnect.php
<?php
$dbserver = 'localhost';
$dbusername = 'foo';
$dbpassword = 'bar';
$dbdatabase = 'usersdb';
$con = mysqli_connect($dbserver, $dbusername, $dbpassword, $dbdatabase);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
我開始認爲這可能是權限相關但它在我的本地主機上使用XAMPP所以它肯定不會是?任何幫助將不勝感激!謝謝。
使用'mysql_real_escape_string'不成爲SQL注入的目標。 – 2014-08-30 11:17:28
您可以從Workbench運行相同的查詢(使用相同的登錄憑據)嗎? – thebjorn 2014-08-30 11:18:25
@KeVin我知道這會彈出,我忘記提及的問題,我最初確實有mysql_real_escape_string,但我拿出來,所以我可以使其儘可能基本 – 2014-08-30 11:18:43