2013-01-02 44 views
0

我在PHP编写脚本插入用户到一个表在数据库中。这里是代码:插入行到MySQL数据库从注册页面

<?php 
$email  = check_input($_POST['EmailAddress'], "Enter your email address"); 
$pass  = check_input($_POST['Password'], "Enter a password"); 
$first_name = check_input($_POST['FirstName'], "Enter your first name"); 
$last_name = check_input($_POST['LastName'], "Enter your last name"); 
$gender  = check_input($_POST['Gender']); 
$dobmonth = check_input($_POST['dobmonth']); 
$dobday  = check_input($_POST['dobday']); 
$dobyear = check_input($_POST['dobyear']); 
$dob  = $dobmonth.'/'.$dobday.'/'.$dobyear; 
$phone  = check_input($_POST['CellPhone']); 
$fanmail = check_input($_POST['FanMail']); 

if (verify($email) === true) { 

从这里编辑:

$link = new mysqli("localhost","263764","Corvette88", "256764 "); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} else { 
    echo 'connected to db table '; 
} 
echo $mysqli->host_info . "\n"; 

$query = "INSERT INTO 68_users VALUES ('$email','$pass','$first_name','$last_name','$dob','$gender','$phone','$fanmail')" or die(mysql_error()); 
if (!mysqli_query($link, $query)) { 
echo 'error: '.mysqli_error($link); 
exit(); 
} 

echo "1 record added "; 

mysqli_close($link); 

到这里..

echo"connection closed"; 
} else {echo'unverifiable email address '; 
    echo $email; 
} 


function check_input($data, $problem='') { 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
if ($problem && strlen($data) == 0) { 
    die($problem); 
} 
return $data; 
} 

function conntodb() { 

} 

function verify($email){ 
$isValid = true; 
$atIndex = strrpos($email,'@'); 
if (is_bool($atIndex) && !$atIndex) { 
    return false; 
} else { 
    $domain = substr($email,$atIndex+1); 
    $local = substr($email, $atIndex); 
} 
$localLen = strlen($local); 
$domainLen = strlen($domain); 
if($localLen < 1 || $localLen > 64) { 
    return false; 
}else if ($domainLen < 1 || $domainLen > 255) { 
    return false; 
} 
if ($local[0] == '.' || $local[$localLen-1] == '.') { 
    return false; 
} elseif (preg_match('/\\.\\./', $local)) { 
    return false; 
} 
if(!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { 
    return false; 
} else if (preg_match('/\\.\\./', $domain)) { 
    return false; 
} else if (!(checkdnsrr($domain,"MX") || checkdnsrr($domain, "A"))) { 
    return false; 
} 
return $isValid; 
} 

?> 

我已经设置了检查点的代码来显示,如果它出现了错误,并如果成功。

我的问题是:它告诉我,它已经成功地将行到数据库,但是当我检查我的数据的基础上它没有显示为以任何方式被填充到数据库中。我不知道我的错在哪里,因为它通过我的检查点..任何想法?

回答

3

你不检查你的查询错误:

mysql_query ("INSERT INTO 68_users (email, pass, first_name, last_name, dob, gender,  phone, fanmail) 
VALUES ('$email','$pass','$first_name','$last_name','$dob','$gender','$phone','$fanmail')"); 

而是执行此操作:

mysql_query ("INSERT INTO 68_users (email, pass, first_name, last_name, dob, gender,  phone, fanmail) 
VALUES ('$email','$pass','$first_name','$last_name','$dob','$gender','$phone','$fanmail')") or die(mysql_error()); 

此外,你应该甚至不使用mysql_ *。改为使用PDO或MySQLi。见this

尝试改变

mysqli_query($link, $query); 

到:

if (!mysqli_query($link, $query)) 
{ 
    echo 'error: '.mysqli_error($link); 
    exit(); 
} 
+0

什么叫 “mysql_ *” 是什么意思? –

+0

你知道你是如何使用'的mysql_connect()','的mysql_query()',ECT ECT?那么,这些功能已被弃用。你应该使用PDO或MySQLi。如果您不喜欢OOP,请使用MySQLi。 – 2013-01-02 20:07:42

+0

'mysql_ *'意味着 “所有的启动'mysql_'的功能”。 –