我有一个有三个输入的表单。两个下拉菜单和一个文本输入。下拉列表在显示之前从我的数据库中填充。文本输入是来自用户的新数据。用户将向我的数据库添加新资产,但必须选择项目的制造商和类别。
添加资产后,我希望更新资产表。我坚持使用表单数据和下拉列表中的现有值来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一样。
答案 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}}