2016-08-02 103 views
0

我正在爲測試網站做一個簡單的註冊表單,並且由於某種原因它沒有將數據發送到數據庫,並且我沒有視覺錯誤。我已經搜索了一個修復程序,但沒有找到任何工作。發送數據從表單到數據庫不工作(php,sql)

這基本上是我的形式(我只複製頁面的組成部分):

<form action="includes/insert.php" method="post"> 
     <h3>Username</h3> 
     <input type="text" name="username"> 
     <br> 
     <br> 
     <h3>Email Address</h3> 
     <input type="email" name="email"> 
     <br> 
     <br> 
     <h3>Password</h3> 
     <input type="password" name="password"> 
     <br> 
     <br> 
     <br> 
     <input id="submit-btn" type="submit" name="submit" value="Submit"> 
    </form> 

正如你所看到的一切都是因爲它的假設是。

,這是我insert.php

<? 
define('DB_NAME', 'logindb'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'password'); 
define('DB_HOST', 'localhost'); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 

$username = $_POST['username']; 
$email = $_POST['email']; 
$password = $_POST['password']; 

$sql = "INSERT INTO `users` (`id`, `username`, `email`, `password`, `timestamp`) VALUES (NULL, '$username', '$email', '$password', CURRENT_TIMESTAMP)"; 

if (!mysql_query($sql)) { 
    die('Error: ' . mysql_error()); 
} 

mysql_close(); 
?> 
+1

id列很可能是一個自動增量列,因此您應該從INSERT INTO語句中將其刪除。 – ViRuSTriNiTy

+3

***請[停止使用'mysql_ *'功能](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。*** [這些擴展名](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[prepared](http://en.wikipedia.org/wiki/Prepared_statement )[PDO]聲明(http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared- statement.php),並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+3

[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can- I-防止-SQL注入式-PHP)***。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! [不相信嗎?](http://stackoverflow.com/q/38297105/1011527) –

回答

1

開幕PHP標籤

<?php 

最新的PHP版本不啓用默認短代碼的語法。

+0

謝謝,我忘了關於這個:) –

0

使用NOW()而不是CURRENT_TIMESTAMP。

+0

['CURRENT_TIMESTAMP'是'NOW()']的同義詞](https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functi ons.html#function_now)和https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_current-timestamp –

+0

NOW()比CURRENT_TIMESTAMP更優選嗎? –