将值从表单和其他多个其他表插入到一个表中

时间:2016-06-05 06:06:27

标签: php sql pdo

我有一个有三个输入的表单。两个下拉菜单和一个文本输入。下拉列表在显示之前从我的数据库中填充。文本输入是来自用户的新数据。用户将向我的数据库添加新资产,但必须选择项目的制造商和类别。

添加资产后,我希望更新资产表。我坚持使用表单数据和下拉列表中的现有值来INSERT INTO我的asset_names表。我需要获取值,用户友好的单词,并从各自的数据库中选择相应的ID。

INSERT INTO asset_names (asset_name, asset_category_id, asset_manufacturer_id, asset_status_id)
VALUES ( :newAssetName,
        ( SELECT category_id FROM asset_categories WHERE category_name=:newAssetCategory),
        ( SELECT manufacturer_id FROM manufacturers WHERE name=:newAssetManufacturer),
        1)";
$stmt = $pdo->prepare( $sql );

//Bind value.
$stmt->bindValue( ':newAssetName',     $newAssetName  );
$stmt->bindValue( ':newAssetCategory', $newAssetCategory );
$stmt->bindValue( ':newAssetManufacturer', $newAssetManufacturer );


//Execute.
$stmt->execute();

如果我将值硬编码到语句变量中,则语句可以正常工作。现在几乎就像变量是null一样。

1 个答案:

答案 0 :(得分:0)

而不是使用子查询。只需将数据传递给DOM。

"INSERT INTO asset_names (asset_name, asset_category_id, asset_manufacturer_id, asset_status_id)
VALUES ( :newAssetName,
        :newAssetCategory),
        :newAssetManufacturer),
        1)";
$stmt = $pdo->prepare( $sql );
//Bind value.
$stmt->bindValue( ':newAssetName', $newAssetName  );
$stmt->bindValue( ':newAssetCategory', $newAssetCategory );
$stmt->bindValue( ':newAssetManufacturer', $newAssetManufacturer );

然后你可以按预期绑定值。

{{1}}