2017-09-25 13 views
-1

PHPを使用して基本的な挿入クエリを実行し、HTMLフォームデータをMySQLデータベースに送信することを検討しています。 しかし、残念ながら、挿入プロセスは実行されていません。 私の挿入構文では、$ _POST [fieldname]を含めて試しましたが、以下のように変数を含めて試してみましたが、iveも異なるapostrphesで再生しましたが、何も動作していないようです。MySQLがPHPが動作しない

をサイドディッシュとして使用していますが、私はまた、トラックの負荷を圧倒しています。圧倒されています.pini.iniファイルではiveが無効になっており、apache.iniファイルではphpが無効になっています。

誰かが私の挿入物と他の何かに間違っているとアドバイスできたら、大変感謝します。

このイントロを直視しないでください。 Personはログインしないでログインしようとするとログインページに戻り、ログインします。 外部の設定ファイルを使用してデータベースに接続し、別の場所でホスティングしているときに50か所で更新を保存します。 設定ファイルが正常に動作しているため、以下に示されていません。 データベースはmydbと呼ばれます。 テキストフィールド項目を変数に格納してから、挿入クエリの変数を使用します。 unitIDは自動インクリメントフィールドなので、挿入を実行するときは空白のままにします。 残念ながら、mysqlデータベースに何も入っていません。 ありがとうございます。 PSテキストフィールド名がすべて正しく

<?php 
    //Start the session 
    session_start(); 
    //check the user is logged in 
    if (!(isset($_SESSION['Username']))) { 
     header ("Location: LoginPage.php?i=1"); 
     exit(); 
    } 
    //Connect to the database 
    include 'config.php'; 
    $UserName = $_SESSION['Username']; 
    $UserIdentification = $_SESSION['UserID'];   
    if(isset($_GET['i'])){ 
     if($_GET['i'] == '1'){ 
      $tblName="sightings"; 
      //Form Values into store 
      $loco =$_POST['txtloco']; 
      $where =$_POST['txtwhere']; 
      $when =$_POST['txtdate']; 
      $time =$_POST['txttime']; 
      $origin =$_POST['txtorigin']; 
      $dest =$_POST['txtdest']; 
      $headcode =$_POST['txtheadcode'];    
      $sql= "INSERT INTO sightings (unitID, Class, Sighted, Date, Time, Origin, Destination, Headcode, UserID) VALUES ('','$loco', '$where', '$when', '$time', '$origin', '$dest', '$headcode', '$UserIdentification')"; 
      mysql_select_db('mydb'); 
      $result=mysql_query($sql, $db); 
       if($result){ 
        $allocationsuccess = "Save Successful"; 
        header ('Refresh: 2; url= create.php'); 
       } 
       else { 
        $allocationsuccess = "The submission failed :("; 
       } 
     } 
    } 
?> 
+2

[Little Bobby](http://bobby-tables.com/)は** [あなたはSQLインジェクション攻撃の危険にさらされている可能性があります](https://stackoverflow.com/q/60174/)**。 [パラメータ化されたクエリ](https://stackoverflow.com/a/4712113/5827005)で[Prepared Statements](https://en.wikipedia.org/wiki/Prepared_statement)について学んでください。パラメータ化されていないクエリを使用するよりも、非常に簡単に、きれいに、より安全にするために、[PDO](http://paragoncds.com/grumpy/pdoquery/#function)を作成することをお勧めします。また、[この記事(http://php.net/manual/en/mysqlinfo.api.choosing.php)]では、 'MySQLi'と' PDO'を選択するのに役立つかもしれません – GrumpyCrouton

+1

** **、使用しないでください'mysql_ *'は新しいコードのために機能します。それらはもはや維持されず、コミュニティは[非推奨プロセス](http://news.php.net/php.internals/53799)を開始し、mysql_ *関数はPHP 7で正式に削除されました。 [prepared statements](https://en.wikipedia.org/wiki/Prepared_statement)について学び、 'PDO'か' mysqli_ * 'を使います。あなたが決定できない場合、[この記事はあなたの最善の選択肢を選ぶのに役立ちます](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 – GrumpyCrouton

+2

'圧倒的なデプロイエラー、php.iniではiveが無効になっていて、apache.iniファイルではphpが無効になっています。おそらく減価償却された関数の使用を止めますか?なぜあなたはエラーを無視しようとしますか?それはただ無責任です。 – GrumpyCrouton

答えて

2

まで一致している、それがどのように動作するかではありません

「UNITIDは 挿入を実行しているときに、私はその空白のままに自動インクリメントフィールドです」。 INSERT文から完全に省略する必要があります。コードでは、そのフィールドを空の文字列に設定しようとしていると考えられますが、これは許可されていません。

$sql= "INSERT INTO sightings (Class, Sighted, Date, Time, Origin, Destination, Headcode, UserID) VALUES ('$loco', '$where', '$when', '$time', '$origin', '$dest', '$headcode', '$UserIdentification')"; 

この問題を修正する必要があります。 MySQLはフィールドの値を自動的に生成し、行を作成するときにそれを挿入します。

あなたのコードがmysql_error()たびmysql_query()戻りfalseによって生成メッセージをログに記録されていたなら、あなたはあなたに何が起こっているかのように手がかりを与えているかもしれないあなたのクエリによって生成されたエラーを、見ていると思います。

P.S.コメントに記載されているように、現在公開されているさまざまな脆弱性を避けるために、新しいmysqlコードライブラリを使用してコードを書き直す必要があります。

+0

多くのおかげでこの問題は解決されました – trainmania100

関連する問題