【问题标题】:Insert data from another table and also from form in MYSQL and PHP从另一个表以及 MYSQL 和 PHP 中的表单插入数据
【发布时间】:2012-04-24 18:32:24
【问题描述】:

我有一个表格,我将数据发布到 mysql。查询应该将表单中的数据插入到 table1 中,但还包括来自另一个 table2 的数据,其中从表单发送的 ID 等于 table2 中的 ID?

我知道,我使用旧的 mysql 连接,不是最好的 :-) 和 php!

希望有人能提供帮助,谢谢 :-) 马丁

想也许我应该提供更多信息:-)

table1 被称为:books

从表单中,我有以下值:itemCode、itemQty、ownerID 我有 2 个静态值:状态、类型

table2 中必须插入到 table1 的值是: 标题、描述、价格、封面

table2 中的字段 isbn 应该等于 form 中的 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");

【问题讨论】:

  • 认为我应该提供更多信息 :-)
  • 我修改后的答案考虑了您提供的代码。

标签: php mysql insert form-submit


【解决方案1】:

如果您有值 'a''b' 进入列 f1f2table1;在f3 中,您想要table2.field 的值,其中table2.id 是123,您可以准备并执行以下几行的SQL 语句:

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

进一步查看更新问题中的代码,您第一次尝试的问题是您试图将INSERT ... SELECTINSERT ... 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】:

    在没有代码的情况下,这里是工作流 id 推荐:

    表单已提交 -> 检查和清理值 -> 对“表 2”执行查找查询并获取相关值 -> 使用表单和“表 2”数据提交更新查询 -> 成功更新后,通知用户他们的信息已处理 -> 感谢他们。

    【讨论】:

      【解决方案3】:

      这样的? :

      $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-12-05
        • 1970-01-01
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        相关资源
        最近更新 更多