2014-09-28 69 views
-1

我有这段代码,我想插入一些值到特定的数据库。由于某些原因,记录不会存储到数据库中。我有一个想法,我的mysql_query出了问题。无法插入到MySQL数据库使用PHP,因为查询

您认为可能会导致此问题的可能问题(我已检查过,它们不影响我的问题): 与数据库的连接未建立。 变量不包含值。

下面是代码:

所有的
<?php 
include('includes/connect-db.php'); 

$firstname = mysql_real_escape_string(stripslashes(trim($_POST['firstname']))); 
$surname = mysql_real_escape_string(stripslashes(trim($_POST['surname']))); 
$username = mysql_real_escape_string(stripslashes(trim($_POST['username']))); 
$password = mysql_real_escape_string(stripslashes(trim($_POST['password']))); 
$email = mysql_real_escape_string(stripslashes(trim($_POST['email']))); 
$tel = mysql_real_escape_string(stripslashes(trim($_POST['tel']))); 
$month = mysql_real_escape_string(stripslashes(trim($_POST['month']))); 
$day = mysql_real_escape_string(stripslashes(trim($_POST['day']))); 
$year = mysql_real_escape_string(stripslashes(trim($_POST['year']))); 
$address = mysql_real_escape_string(stripslashes(trim($_POST['address']))); 
$postcode = mysql_real_escape_string(stripslashes(trim($_POST['postcode']))); 
$city = mysql_real_escape_string(stripslashes(trim($_POST['city']))); 
$country = mysql_real_escape_string(stripslashes(trim($_POST['country']))); 

if(isset($_POST['submit_register'])) { 


    if(!empty($firstname) && !empty($surname) && !empty($username) && !empty($password) && !empty($email) && !empty($tel) && !empty($month) && 
    !empty($day) && !empty($year) && !empty($address) && !empty($city) && !empty($country)) { 

    mysql_query("INSERT INTO customers (firstname, surname, username, password, email, tel, month, day, year, address, city, country) 
    VALUES ('$firstname','$surname','$username','$password', '$email', '$tel', '$month', '$day','$year','$address','$postcode','$city','$country')"); 
    echo'success'; 
    } 
    else{ 
    echo'failure'; 
    } 

} 


?> 
+0

当你运行代码时,它是否回显成功或失败? – Doon 2014-09-28 12:56:31

+0

它回声的成功 – totovic 2014-09-28 12:56:55

+0

您不检查'mysql_query'的结果。如果发生错误,它会返回'false',之后您还可以获取[错误消息(http://php.net/manual/en/function.mysql-error.php)。你可以在这里查看[mysql_query'上的文档](http://php.net/manual/en/function.mysql-query.php)。另外请确保阅读页面顶部的那个大红色框,表示您不应该再使用此功能。 – GolezTrol 2014-09-28 13:00:22

回答

1

首先,你不应该使用的mysql_query因为这扩展不赞成PHP 5.5.0的,并会在将来被移除。相反,请使用MySQLiPDO_MySQL扩展名。

关于您的代码,您已经忘记在SQL查询中添加邮编列类型。

mysql_query("INSERT INTO customers (firstname, surname, username, password, email, tel, month, day, year, address, postcode, city, country) 
VALUES ('$firstname','$surname','$username','$password', '$email', '$tel', '$month', '$day','$year','$address','$postcode','$city','$country')"); 

如果不工作,然后检查是否有任何您想保存到数据库中的变量的缺失,如果他们然后给他们一个空值。

例如:

if (isset($_POST['firstname'])) { 
    $firstname = mysql_real_escape_string(stripslashes(trim($_POST['firstname']))); 
} else { 
    $firstname = ''; 
} 

或者您可以使用 “ternary operator”:

$firstname = isset($_POST['firstname']) ? mysql_real_escape_string(stripslashes(trim($_POST['firstname']))) : ''; 

这样做对所有的变量,然后尝试运行查询。

+0

我现在已添加邮编列 - 它仍然不插入记录 – totovic 2014-09-28 13:00:51

+0

我编辑了我的答案。为您要存储的每个变量添加一条if语句。如果为空,则将其等于“”。如果它帮助你,请接受它。:) – consuela 2014-09-28 13:12:05

0

我通常会在这种情况下做什么,我将我的sql查询语句复制到mysql终端。 我尝试在那里的代码,以查找它是否运行没有任何问题。 如果没有,那么mysql会引发错误。 如果它那么我通常使用sprintf函数格式化查询。 事情是这样的:

if(!empty($firstname) && !empty($surname) && !empty($username) && !empty($password) && !empty($email) && !empty($tel) && !empty($month) && 
!empty($day) && !empty($year) && !empty($address) && !empty($city) && !empty($country)) { 

    $query = sprintf('INSERT INTO customers (firstname, surname, username, password, email, tel, month, day, year, address, city, country) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)',$firstname,$surname,$username,$password,$email,$tel,$month,$day,$year,$address,$postcode,$city,$country); 

    $result = mysql_query($query); 

    if($result){ 
     echo 'Success'; 
    }else{ 
     echo 'Failure'; 
    } 
} 

使用sprintf函数时,%s是一个字符串的占位符。其中有几个。检查PHP文档。

相关问题