情報を記載したメールを送信する求人応募フォームがあります。また、フォームの値(以下の上部にあるhandler.phpに値がインポートされます)をサーバー上のデータベースのテーブルに挿入する必要があります。 。
ただし、値が挿入されていないため、理由がわかりません。
私は実際にこのスクリプトを別のドメインとサーバーにあるクライアントの古いバージョンのWebサイトから取得しましたが、それでも完全に機能しているため、ここで機能しない理由がわかりません。私が変更したのはデータベースの詳細だけです。ある時点で、この問題はmysql_connectなどがmysqliと同等のものを優先して非推奨になっているためかもしれないと思いましたが、クライアントのサーバーはまだPHP 5.3を実行しているので、それは問題ではないはずです。
PHPMyAdminを介して、データベースと「team」というテーブルがあります。古いWebサイトの元の設定に従ってすべての列を作成しているので、下のINSEERTクエリに表示される各項目はどこかに移動できます。
SQL接続コードに何かが欠けていますか?ユーザー名、パスワード、ドメイン、データベースはすべて正しいです...
$date = date("d/M/Y");
$name = Trim(stripslashes($_POST['name']));
$dob = Trim(stripslashes($_POST['dob']));
$contact = Trim(stripslashes($_POST['contact']));
$email = Trim(stripslashes($_POST['email']));
$preferredCity = Trim(stripslashes($_POST['preferredCity']));
$nightsMo = Trim(stripslashes($_POST['nightsMo']));
$nightsTu = Trim(stripslashes($_POST['nightsTu']));
$nightsWe = Trim(stripslashes($_POST['nightsWe']));
$nightsTh = Trim(stripslashes($_POST['nightsTh']));
$nightsFr = Trim(stripslashes($_POST['nightsFr']));
$nightsSa = Trim(stripslashes($_POST['nightsSa']));
$nightsSu = Trim(stripslashes($_POST['nightsSu']));
$ownCar = Trim(stripslashes($_POST['ownCar']));
$previousWork = Trim(stripslashes($_POST['previousWork']));
if (Trim($nightsMo)=="") $nightsMo="NULL";
if (Trim($nightsTu)=="") $nightsTu="NULL";
if (Trim($nightsWe)=="") $nightsWe="NULL";
if (Trim($nightsTh)=="") $nightsTh="NULL";
if (Trim($nightsFr)=="") $nightsFr="NULL";
if (Trim($nightsSa)=="") $nightsSa="NULL";
if (Trim($nightsSu)=="") $nightsSu="NULL";
if (Trim($ownCar)=="") $ownCar="NULL";
$username="XXX";
$password="XXX";
$database="XXX";
mysql_connect("example.co.uk",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
mysql_query("INSERT INTO team (t_date, t_name, t_dob, t_contact, t_email, t_preferredCity, t_nightsMo, t_nightsTu, t_nightsWe, t_nightsTh, t_nightsFr, t_nightsSa, t_nightsSu, t_ownCar, t_previousWork, t_picture) VALUES ('$date', '$name','$dob','$contact','$email','$preferredCity',$nightsMo,$nightsTu,$nightsWe,$nightsTh,$nightsFr,$nightsSa,$nightsSu,$ownCar,'$previousWork', '$filePath')");
mysql_close();
原因が何であるかは不明ですが、コードをリファクタリングして、デバッグを容易にするために物事を合理化および簡素化しました。
私が最初にしたことは、すべての$_POST
チェックを1つのメイン配列($post_array
)を使用する構造に取り込み、その配列をロールスルーして値を処理し、同様の名前の変数に割り当てることでした。
さらに、$result
文字列チェックを追加しました。mysql_query
これは、それが返されるかどうかを確認するためのチェックを実行します。それが失敗した場合は、を介してエラーが何であるかを示してくださいmysql_error()
。これは、何が起こっているのかをデバッグするのに役立つ鍵になるはずです。
$date = date("d/M/Y");
// Set the post values array.
$post_array('name','dob','contact','email','preferredCity','nightsMo','nightsTu','nightsWe','nightsTh','nightsFr','nightsSa','nightsSu');
// Role through the post values array.
foreach($post_array as $post_key => $post_value) {
$$post_key = isset($_POST[$post_key]) ? Trim(stripslashes($_POST[$post_key])) : null;
}
$username="XXX";
$password="XXX";
$database="XXX";
mysql_connect("example.co.uk",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "INSERT INTO team (t_date, t_name, t_dob, t_contact, t_email, t_preferredCity, t_nightsMo, t_nightsTu, t_nightsWe, t_nightsTh, t_nightsFr, t_nightsSa, t_nightsSu, t_ownCar, t_previousWork, t_picture) VALUES ('$date', '$name','$dob','$contact','$email','$preferredCity','$nightsMo','$nightsTu','$nightsWe','$nightsTh','$nightsFr','$nightsSa','$nightsSu','$ownCar','$previousWork', '$filePath')";
// Run the query & return the result.
$result = mysql_query($query);
// Check the mysql query result. If there is none, there is an error. So tell us what the error is.
if (!$result) {
die('Invalid query: ' . mysql_error());
}
mysql_close();
また、関連はありませんが、指摘する価値があるのは、mysql_*
拡張機能がPHP5.3およびPHP5.4で減価償却されていることです。あなたはに切り替える必要があるmysqli_*
ため、拡張mysql_*
PHP 5.5に排除することで機能拡張。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加