0

数日前に投稿しましたが、セットアップしたMySQLデータベースに追加のレコードを挿入できませんでした。構文を修正しましたが、データベースが再度更新されません。基本的に、PHPがデータベースに挿入する最終ページのプロセスになるまで、セッションを次のページに引き継ぐHTMLのフォームがいくつかあります。2回機能しましたが(現在データベースに2つのレコードがあります)、追加のレコードは挿入されません。数日前は問題なく動作しました。私が何かに加えた唯一の変更は、同じユーザーで同じデータベースにアクセスする検索機能を追加したことですが、そのスクリプトの最後でも接続が閉じられます。これが私がデータベースに挿入するために使用しているコードです(私はそれが最良のコーディング作業ではないことを知っています、私はまだ学んでいます)。

<?php

$con = mysql_connect("localhost","my_username","mypassword");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dgibbo1_imaging", $con);

// Here too, please mysql_real_escape_string() all parameters 
mysql_query("INSERT INTO imaging (os,MAC,Model,AntiVirus,Browser,Email,Connectivity,Sound,Ports) VALUES ('".$_SESSION['imaging2']."','".$_SESSION['imaging3']."','".$_SESSION['imaging4']."','".$_SESSION['antivirus']."','".$_SESSION['browser']."','".$_SESSION['email']."','".$_SESSION['connectivity']."','".$_SESSION['sound']."','".$_SESSION['ports']."')");
    OR die("Could not update: ".mysql_error());



mysql_close($con);
?>

データベースの名前はイメージングです。列は次のように設定されます。id(これは主キーフィールドです)osMACモデルアンチウイルスブラウザ電子メール接続サウンドポート

今日再試行するまで、問題なくレコードが挿入されたのは奇妙だと思います。検索用のコードと関係がある可能性はありますか?

検索は別のページの単純なフォームであり、このフォームを処理します。

<?php

$con = mysql_connect("localhost","my_user","mypassword");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dgibbo1_imaging", $con);

// Always escape parameters injected into SQL queries
$result = mysql_query( "SELECT * FROM imaging WHERE MAC LIKE '%" 
                     . mysql_real_escape_string ( $search, $con ) 
                     . "%'"
                     );

echo "<table border='1'>
<tr>
<th>MAC</th>
<th>Model</th>
<th>AntiVirus</th>
<th>Email</th>
<th>Browser</th>
<th>Connectivity</th>
<th>Sound</th>
<th>Ports</th>
</tr>";

while($row = mysql_fetch_array($result)) {

  echo "<tr>";
  echo "<td>" . $row['MAC'] . "</td>";
  echo "<td>" . $row['Model'] . "</td>";
  echo "<td>" . $row['AntiVirus'] . "</td>";
  echo "<td>" . $row['Email'] . "</td>";
  echo "<td>" . $row['Browser'] . "</td>";
  echo "<td>" . $row['Connectivity'] . "</td>";
  echo "<td>" . $row['Sound'] . "</td>";
  echo "<td>" . $row['Ports'] . "</td>";
  echo "</tr>";

  }

echo "</table>";

mysql_close($con);
?>

その間、検索は毎回2つの既存のレコードを正常にプルアップしますが、新しいレコードを追加することはできず、これと関係があるのではないかと思います。

提案をありがとう。私の構文はおそらく最良ではないことを知っているので、このサイトからの提案は常にありがたいです。

4

2 に答える 2

0

別の php ファイルを作成し、それに値をハードコーディングしてみてください。それを実行して、何が起こるか見てください。検索フォームが別のフォームに干渉してはなりません。

フォーム使用時のエラーを編集しますか? 別のテーブルに挿入するときにエラーはありますか?

于 2012-04-29T16:48:49.840 に答える
0

あなたの投稿を見ましたが、すべて「正しい」ように見えます。私が提案したいのは、DIE の代わりにログを追加し、MySQL がこれらの挿入ステートメントについて何を言っているかを調べることです。

$sql = "INSERT INTO imaging ....";
mysql_query($sql);
if(mysql_errno()) {
    $message  = mysql_error() . "\n" . $sql . "\n";
    $fp = fopen('c:\mylogifle.txt', 'a');
    fwrite($fp, $message);
    fclose($fp);
}

そして...誰もが言及したように、これらの文字列をエンコードします-SQLが実際に実行されており、それが機能することを「知っている」と仮定すると、値の1つにある句読点がSQLに干渉している可能性が非常に高くなります。 MySQL を混乱させる予期しないカンマ

于 2012-04-29T17:01:07.257 に答える