2012-03-11 9 views
1

My codeはmysqlにレコードを挿入しません。なにが問題ですか?私は本当に混乱しています。 フォームを設計しましたが、テキストボックスからデータを読み取り、データベースに送信します。あなたは、ほとんど何もすることができ提供したコードでデータベースにデータを挿入するときに問題が発生する

<?php 
if(isset($_post["tfname"])) 
    { 
     $id=$_post["tfid"]; 
     $name=$_post["tfname"]; 
     $family=$_post["tffamily"]; 
     $mark=$_post["tfmark"]; 
     $tel=$_post["tftell"]; 

$link=mysql_connect("localhost","root",""); 
if (!$link) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("university",$link); 
$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'$name','$family',$mark,$tel)"; 

mysql_query($insert,$link); 
    } 
mysql_close($link); 
?> 
+0

どのようなエラーが表示されますか? –

+1

PHP変数では大文字と小文字が区別されます。正しい変数が '$ _POST'であるため、' $ _post'は動作しません(適切なエラー報告オプションが設定されている場合は、これが通知に現れるはずです)。また、クエリが正しく実行されているかどうかをチェックし、mysql_error()が表示されない場合は表示/ログする必要があります。ところで、あなたのスクリプトが動作しても、潜在的な攻撃者があなたのデータベースを略奪する可能性のあるSQLインジェクションホールがありますか? –

答えて

2

id、mark、およびtelの後に引用符を入れるとよいでしょう。 @Another Codeが述べたように、あなたのコードで$ _postの代わりに$ _POSTを使わなければなりません。これを試してみて、私に結果を伝える:

<?php 
if(isset($_POST["tfname"])) { 
    $id=$_POST["tfid"]; 
    $name=$_POST["tfname"]; 
    $family=$_POST["tffamily"]; 
    $mark=$_POST["tfmark"]; 
    $tel=$_POST["tftell"]; 

    $link=mysql_connect("localhost","root",""); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } else { 
     mysql_select_db("university",$link); 
     $insert="insert into student 
       (sid,sname,sfamily,smark,stel) values 
       ('$id','$name','$family','$mark','$tel')"; 
     mysql_query($insert,$link) or die (mysql_error()); 
     mysql_close($link); 
    } 
} else { 
    die('tfname did not send'); 
} 
?> 

はエラーメッセージを取得するためにmysql_query($insert,$link) or die (mysql_error());を使用してください。

+0

mohammad、それは動作しませんでした。 – samira

+0

@サミ:あなたが手に入れたエラーを出すでしょうか?それがうまくいかなかったのは答えではありません... –

+0

mysql_error()はエラーを出力する必要があります。それは何ですか? –

0

- いくつかのテストを行うには...あなたはあなたもPOSTでtfnameを取得している確認するために何かをecho'dしていますか?それは良いデータベースを選択しますか? $ id、$ mark、$ telの各フィールドにも一重引用符が必要ですか?より多くのヘルプを提供するためにコードが動作していない場所についてもっと知る必要がありますが、スニペットが実行されているかのように表示されますが、その間に問題を絞り込むためにエコーを使用してください。

0

生成されたSQLクエリをSQLクエリブラウザで実行してみます。 "echo $ insert"ステートメントでクエリを取得します。

-1

に変更$インサートを:

$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'".$name."','".$family."','".$mark."','".$tel."')"; 

は、さらに必要に応じので、PHPはエラーメッセージを表示するini_set('display_errors',1)を設定します。

最後に、mysqlクエリを実行するときはいつも、クエリにor die(mysql_error())を使用してください。そうすれば、何かがmysqlや構文に間違っているとわかっています。

$q = mysql_query($query) or die(mysql_error()); 
+0

'die'はスクリプト全体をシャットダウンするので、エラー処理には使用しないでください。これはバグや奇妙な出力を簡単に引き起こす可能性があり、実際の環境では、ユーザにスクリプトエラーを直接表示することは好ましくありません。適切なエラー処理ルーチンを書くことが重要です。 –

+0

私はこのアプリケーションを試してみると、このアプリケーションを試してみると、エラーが修正されたら、ダイフィーチャーを削除することができます... – yuvrajm

+0

これは完璧ですが、それについて注意するのは良いことです。デバッグ専用です。また、スクリプトは常に適切な(デー​​タベース)エラー処理が必要です。今すぐ動作するクエリは、今後動作を停止することになります。 –

関連する問題