0

データをmysqlに投稿するフォームがあります。クエリはフォームからのデータをtable1に挿入する必要がありますが、フォームから送信されるIDがtable2のIDと等しい別のtable2からのデータも含める必要がありますか?

私は古いmysql接続を使用していますが、最高ではありません:-)とphp!

誰かが助けてくれることを願っています、ありがとう:-)マーティン

多分私はもう少し情報を与えるべきだと思います:-)

table1は呼ばれます:本

フォームから、私は次の値を持っています:itemCode、itemQty、ownerID私は2つの静的な値を持っています:ステータス、タイプ

table1に挿入する必要があるtable2の値は、タイトル、説明、価格、表紙です。

table2のフィールドisbnは、フォームのitemCodeと同じである必要があります。

これが私がこれまでに試したことです:

    $bookid=$_POST['itemCode'];
$itemQty=$_POST['itemQty'];
$status='2';
$ownerID = $user->id;

$query="INSERT INTO books (name, description, price, picture, status, ownerID, itemqty, type, studie, isbn) SELECT (title, description, price, frontcover FROM isbnbooks WHERE isbn=$itemCode), $status, $ownerID, $itemQty, '1', '1', $bookid)";

更新:私もここでこれを試しました:

$bookid=$_POST['itemCode'];
        $itemQty=$_POST['itemQty'];
        $status='2';
        $ownerID = $user->id;

        $data2 = mysql_fetch_array (mysql_query("SELECT * FROM isbnbooks WHERE isbn = $bookid"));
        $title = $data2[title];
        $description = $data2[description];
        $price = $data2[price];
        $picture = $data2[frontcover];

        $query="INSERT INTO books (name, description, price, picture, status, ownerID, itemqty, type, studie, isbn) 
        VALUES ($title, $description, $price, $picture, $status, $ownerID, $itemQty, '1', '1', $bookid)";
        mysql_query($query) or die("Opps some thing went wrong");
4

3 に答える 3

0

値が'a'あり、'b'f1f2のに入る場合table1; また、wheref3の値が123である場合は、次の行に沿ってSQLステートメントを準備して実行できます。table2.fieldtable2.id

INSERT INTO table1 (f1, f2, f3)
  SELECT 'a', 'b', field FROM table2 WHERE id = 123;

更新された質問のコードを確認することに加えて、最初の試行の問題は、INSERT ... SELECT;INSERT ... VALUESと混合しようとしていることです。悲しいことに、それらは相互に排他的です。ただし、代わりに次のように書くことができます。

INSERT INTO books (
  name,
  description,
  price,
  picture,
  status,
  ownerID,
  itemqty,
  type,
  studie,
  isbn
)
  SELECT
    title,
    description,
    price,
    frontcover,
    :status,  -- use prepared statements to prevent SQL injection
    :ownerID, -- see http://bobby-tables.com/ for more info
    :itemQty,
    '1',      -- do you really want a string containing a number?
    '1',
    :bookid
  FROM isbnbooks
  WHERE isbn=:itemCode;

2回目の試行は、機能するはずのように見えます(ただし、実際にはプリペアドステートメントを使用する必要があります。上記を参照してください)。どんな問題がありますか?

于 2012-04-24T18:46:12.527 に答える
0

このようなもの ?:

$data2 = mysql_fetch_array (mysql_query("SELECT * FROM table2 WHERE id2 = '1'"));

$data1 = data2['column2'];

mysql_query("INSERT INTO table1 VALUES('value1','$data2') WHERE id1 = id2);
于 2012-04-24T18:41:52.220 に答える
0

コードがない場合のワークフローIDの推奨事項は次のとおりです。

フォームが送信されます->値を確認してサニタイズします->「テーブル2」に対してルックアップクエリを実行し、関連する値を取得します->フォームと「テーブル2」の両方のデータを使用して更新クエリをコミットします->更新が成功したら、ユーザーに情報が送信されたことを通知します処理済み->ありがとうございます。

于 2012-04-24T18:35:37.243 に答える