2013-05-18 26 views
-2

我有我的網站,但對於一些不敬虔的原因,將不插入用戶鍵入到MySQL數據庫表中的記錄,因爲它是下面的PHP代碼/文件被要求。誰能告訴我爲什麼這是?我的PHP代碼不會記錄插入我的SQL dabase表

到目前爲止,我可以告訴代碼是完全正確的,我不知道爲什麼會這樣......

請幫助...代碼如下...

<html> 
<head> 
</head> 
<body> 
<form action="register_development_file_1.php" method="post"> 
    Email: <input type="text" name="email"><br /> 
    Date: <input type="text" name="date"><br /> 
    Time: <input type="text" name="time"><br /> 
     <input type="submit" name="submit"> 
</form> 

    <?php 
    if (isset($_POST['submit'])) 
    { 
     $con = mysql_connect("localhost","username","password"); 
     if (!$con) 
     { 
      die("Could not connect to the database: " . mysql_error()); 
     } 

     mysql_select_db("wwwbrecs_BREC",$con); 

    $sql = "INSERT INTO 'signups' ('signup_email_address', 'signup_date', 'signup_time') VALUES ('$_POST[email]','$_POST[date]','$_POST[time]')"; 

     mysql_query($sql,$con); 

     mysql_close($con); 
    } 
    ?> 
</body> 
</html> 
+0

如何提交? – 2013-05-18 17:41:20

+3

在查詢語句後檢查'mysql_error()'以檢查錯誤。此外,'mysql_x'函數已被棄用。看看PDO和mysqli作爲替代品。 – Sirko

+0

對不起,我的PHP技能很差。什麼是提交? – xzrb1187d

回答

0

這裏是您創建的腳本更好的版本,因爲你是100%開放的SQL注入,真是連作弄的傳統方式,這是安全的,但如果你需要安全的,那麼我建議你從here瞭解PDO

<?php 
    if(isset($_POST['submit'])){ 
     mysql_connect("localhost","username","password") or die(mysql_error()); 
     mysql_select_db("wwwbrecs_BREC", $con) or die(mysql_query()); 

     $email = mysql_real_escape_string($_POST['email']); 
     $date = mysql_real_escape_string($_POST['date']) 
     $time = mysql_real_escape_string($_POST['time']) 

     $sql = "INSERT INTO 
      signups ('signup_email_address', 'signup_date','signup_time') 
      VALUES ('".$email."','".$date."','".$time."')"; 

     mysql_query($sql, $con) or die(mysql_error()); 

     mysql_close($con); 
    } 
0

註冊等表不應該用單引號',但撇號'

包圍因此

$sql = "INSERT INTO 'signups' ('signup_email_address', 'signup_date',       'signup_time') VALUES ('$_POST[email]','$_POST[date]','$_POST[time]')"; 

應該

$sql = "INSERT INTO `signups` ('signup_email_address', 'signup_date',       'signup_time') VALUES ('$_POST[email]','$_POST[date]','$_POST[time]')"; 
+0

你不應該使用反引號 –

+3

爲什麼不能?在這裏,我找到了一個很好的解釋,爲什麼他們可以是有用的 - http://stackoverflow.com/questions/261455/using-backticks-around-field-names – Nikola

+3

那麼它並不總是由你來設計數據庫。 – Nikola

0
<?php 
$sql = " 
    INSERT INTO signups 
    (signup_email_address, signup_date, signup_time) 
    VALUES 
    ('" . mysql_real_escape_string($_POST['email']) . "','" . mysql_real_escape_string($_POST['date']) . "', '" . mysql_real_escape_string($_POST['time']) . "')"; 

這應該做的伎倆,還要檢查你的安全

2

有一個語法錯誤在您的查詢,您sholdn't環繞表名和引號'列,至少可以使用反引號`

INSERT INTO 'signups' ('signup_email_address', 'signup_date','signup_time') 

應該

INSERT INTO signups (signup_email_address, signup_date, signup _time) VALUES 

或者

INSERT INTO `signups` (`signup_email_address`, `signup_date`, `signup _time`) VALUES 

只值(實際上不是整數列的整數)應與報價'包圍。

然後我想記住你,mysql_功能已被棄用,所以我會建議你切換到mysqliPDO而事實上你是在sql injection風險,這裏How can I prevent SQL injection in PHP?看看。你應該使用準備好的陳述來避免任何風險