2012-03-22 22 views
1

以下のinsert.phpファイルをデバッグするのに苦労しました。これと関連するWebフォームファイルinwampサーバーを実行中にエラーは発生しませんが、データをデータベースに読み取っていません。誰かがこれについてコメントできますか?下記のinsert.phpに何か問題がありますか?

?php 
if (isset($_POST['submit'])) { 


//Connect to the database 



$host="localhost"; 
$user="root"; 
$password=""; 
$dbc=mysql_connect($host,$user,$password) or die("Connection Error"); 
$db_name="userregistration"; 
mysql_select_db("$db_name") or die ("Could not select database"); 



//Reading data from form and writing to the DB 
$fname = $_POST['fname']; 
$institution = $_POST['institute']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$pgm = $_POST['pgm']; 
$address = $_POST['address']; 



//Examining for input errors 
$error = FALSE; 


if (isset($address)) { 
$address = trim($address); 
$address = strip_tags($address); 
} 

if (isset($fname) && 
isset($institute) && 
isset($email) && 
isset($phone) && 
isset($pgm) && 
isset($address) && 
$error == FALSE) { 
$process = TRUE; 
} else { 
$process = FALSE; 
} 

//Writing the multiple answers for user selected programs 

while ((list($key,$val) = each($pgm))) { 
$pgm .= "[" . $val . "]"; 
} 



//Creating the table 
$query = "create table userdata 
(sid int unsigned not null auto_increment primary key, 
fname char(50) not null, 
institute char(50) not null, 
email char(50) not null, 
phone int unsigned, 
pgm text not null, 
address char(200) not null)"; 
$q = mysql_query($query); 




//Inserting the data 
$query = "insert into userdata values ('','$fname','$institute','$email','$phone','$pgm','$address')"; 
$q = mysql_query($query); 


//Check whether data was properly inserted 
if (!$q) { 
exit("<p>MySQL Insertion failure.</p>"); 
} else { 
mysql_close(); 
echo "<p>MySQL Insertion Successful</p>"; 
} 

} 
?> 

誰かがこれについてコメントできますか?

+1

投稿変数をエスケープすることを忘れないでください。今あなたのコードはSQLインジェクションに脆弱です – Tim

+1

そして、なぜこのことがロードされるたびにテーブルを作成しますか? – Tim

+0

www.bobby-tables.com –

答えて

1

試して、あなたのするmysql_query($クエリ)の後

or die(mysql_error()); 

を追加します。それが失敗した場合、確かにエラーを表示します...

+0

Wampサーバーでファイルを実行すると、データベースに何も挿入されていない空白のページが表示されます。テーブルは作成されていません。 –

+0

まだエラーはありません..... –

1

$ qをエコーアウトしようとしましたか?それは私の最高の推測では、テーブルが既に存在していることで、ユーザーがフォームを送信するときので、あなたのコードが再びテーブル「ユーザデータ」を作成しようとします。..データベースに追加しようとすると間違っている正確に何

+0

@Andrew De Forest:$エラーの問題についてもう少し説明できますか? 今、私は大学にいます。私は家に帰ると結果を投稿します。 –

+0

答えのためにAsaf、Andrew、Timに感謝します。私はかなりphpとmysqlの新しいです。昨日のちょうど前日、私はこれらの本を手に入れましたか?私はオンラインチュートリアルの助けを借りてコードを書いた。私は、挿入クエリをエコーし​​、エラーがポップアップするかどうかをチェックします。 –

1
//Check whether data was properly inserted 
if (!$q) { 
die(mysql_error()); 
exit(); 
} else { 
mysql_close(); 
echo "<p>MySQL Insertion Successful</p>"; 
} 
+0

私が書いた上記のコードに何か問題がありますか?私の知る限り、エコーに追加したことを除いて、どちらも同じです..... –

0

を教えてくださいすでにそこにあり、その後死ぬ。

すべての提出時に既に存在するテーブルを作成しようとするため、コードからcreate文を削除する必要があります。また、コードが現れたときにSQLインジェクション攻撃を要求するだけで、SQL文に渡す前にサブミットされたデータをエスケープする方法も検討してください。

+0

Hei Hairzoは、insert.phpを実行した後、テーブルが作成されていません。 phpmyadminのページを確認して確認しました。 –

関連する問題