0

私は、データベースのテーブルにユーザーを挿入するためのスクリプトをPHPで作成しています。コードは次のとおりです。

<?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;
}

?>

エラーが発生した場合と成功した場合に表示するコードのチェックポイントを設定しました。

私の問題は、データベースに行を追加することに成功したことを示していますが、データベースを確認すると、データベースにデータが入力されていると表示されていません。チェックポイントを通過しているので、どこが間違っているのかわかりません。何かアイデアはありますか?

4

1 に答える 1

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を使用してください。これを見る

変更してみてください

mysqli_query($link, $query);

に:

if ( !mysqli_query($link, $query) )
{
    echo 'error: '.mysqli_error($link);
    exit();
}
于 2013-01-02T19:58:33.170 に答える