2009-05-14 17 views
0

これは私のテーブルを更新するコードです。私の問題は、新鮮なレコードを提出した後、初めて更新することができないことです(それは空白と表示されます)が、2回目は正常に動作します。php mysqlによるテーブルの更新

もうひとつ:include文を削除すると、submessage.php上で問題なく動作しています。phpcodeはありません。 [annakata:私はこれが何を意味するのか見当がつかない]

$pid = $_GET['id']; 
$title = $_POST['title']; 
$summary = $_POST['summary']; 
$content = $_POST['content']; 
$catid = $_POST['cid']; 
$author = $_POST['author']; 
$keyword = $_POST['keyword']; 
$result1= mysql_query("update listing set catid='$catid',title='$title', 
summary='$summary',content='$content', author='$author', keyword='$keyword' where pid='$pid'",$db); 
    include("submessage.php"); 
+0

あなたのコードを追加するのを忘れたと思います。 – NinethSense

+0

そしてコードをフォーマットしてください:-) – foraidt

+0

これはコミュニティのwikiではないと思います;) –

答えて

1

コードのその部分で間違っているものが列挙するのは難しいです。しかし、質問する前に少なくともestablish a connection to the databaseする必要があります。

+0

私はallreadyデータベース –

0

SQLインジェクションの通常の警告以外にも、あなたのコードが与えられている可能性があります。また、クエリパラメータを取得する場所(あらゆる種類のバリデーションに関係しません)では、問合せとは何の関係もない可能性があります。特にそれが後続の試みに取り組んでいる場合は特にそうです。スクリプトを初めて呼び出すときに$ _GET ['id']が設定されていますか?

ただ更新する必要があるフィールドごとにいくつかの更新クエリを実行する必要はありません。単一のクエリにそれらを組み合わせるだけです。

+0

が含まれている問題を解決していない –

+0

それは正常に動作しています更新 –

1

なぜそれをインライン展開するのではなく、submessage.phpにリダイレクトするだけですか?リダイレクトは、ユーザーがページをリフレッシュしたときに重複するDB操作も防止します。アプリケーションをデプロイする前に、また

header('Location: submessage.php?id=' . $pid); 
die(); 

::だけでinclude文を置き換えるはEVER SQLクエリで直接ユーザー入力を入れないでください。代わりにバインドされたパラメータを使用する必要があります。それ以外の場合は、データベースの管理者パスワードを公に宣伝することもできます。ここで私はそれを行うだろうかだhttp://ie.php.net/pdo

でPDOと準備された文の続きを読む:

$pdo = new PDO(....); // some configuration parameters needed 
$sql = " 
    UPDATE listing SET 
     catid=:catid, title=:title, summary=:summary, 
     content=:content, author=:author, keyword=:keyword 
    WHERE pid=:pid 
"; 
$stmt = $pdo->prepare($sql); 
$stmt->bindValue('catid', $_POST['catid']); 
$stmt->bindValue('title', $_POST['title']); 
$stmt->bindValue('summary', $_POST['summary']); 
$stmt->bindValue('content', $_POST['content']); 
$stmt->bindValue('author', $_POST['author']); 
$stmt->bindValue('keyword', $_POST['keyword']); 
$stmt->bindValue('pid', $pid = $_GET['id']); 
$stmt->execute(); 

header('Location: submessage.php?id=' . $pid); 
die(); 

あるいは実際には、私はそれがより多くのことのように見えるようにするために、いくつかのORMソリューションを使用します。

$listing = Listing::getById($pid = $_GET['id']); 
$listing->populate($_POST); 
$listing->save(); 

header('Location: submessage.php?id=' . $pid); 
die(); 
関連する問題