2012-04-29 19 views
0

私は数日前に投稿しました。追加のレコードをMySQLデータベースのセットアップに挿入できませんでした。構文を修正しましたが、データベースは再び更新されません。基本的には、PHPがデータベースに挿入する最終ページのプロセスになるまで、次のページにセッションを運ぶHTMLのカップルフォームがあります。それは2回働いた(今はデータベースに2つのレコードがある)が、追加のレコードは挿入されない。数日前にうまくいきました。私が何かに対して行った唯一の変更は、同じユーザーと同じデータベースにアクセスする検索機能を追加したことですが、そのスクリプトの最後にも接続が閉じられています。ここでは、私はデータベースに挿入するために使用しているコードです(私はそれが最高のコーディングジョブではないことを知っています、私はまだ学んでいます)。PHP/MySQL - データベースをINSERTすることができません

<?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(これは、主キーフィールドである) OS MAC モデル AntiVirusの ブラウザ メール 接続 サウンド ポート

:としての列が設定されています私は今日それをもう一度試すまで。それは検索のために私のコードと関係がある可能性がありますか?

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

<?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つの既存のレコードをプルアップしますが、私は新しいレコードを追加し、私はできませんそれと何か関係があるのだろうかと疑問に思います。

ありがとうございます。私の構文はおそらく最高ではないので、このサイトからの提案は常に高く評価されます。

+2

文字列値を正しく構文エラーやおそらくSQLインジェクションを避けてください。 – Gumbo

+0

あなたのコードに 'mysql_error()'を出力しています - それは何を言いますか? –

+0

さて、mysql_error()の結果を投稿してください。 – SteAp

答えて

0

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

編集フォームを使用する際にエラーが発生しましたか?別のテーブルに挿入するときのエラー?

+0

ページを独立したページとして実行し、データベースを更新しましたが、すべてのフィールドが空白になりました。助けてくれてありがとう!それは有り難いです。 – dgibbons82

+0

あなたの声明をチェックしてみましたか?つまり、すべての "、"は正しいですか? – anselm

0

私はあなたの投稿を見ました、そして、それはすべて "正しい"ように見えます。私がお勧めしたいことは代わりにダイのいくつかのログを追加し、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があると仮定して実際に実行されていて、それが動作していることを「知っている」ということは、MySQLの混乱を招く予期しないコンマのように、SQLの値の一部に句読点が含まれている可能性が非常に高いことです。

関連する問題