Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从表单和其他多个表向一个表中插入值_Php_Sql_Pdo - Fatal编程技术网

Php 从表单和其他多个表向一个表中插入值

Php 从表单和其他多个表向一个表中插入值,php,sql,pdo,Php,Sql,Pdo,我有一个表单,有三个输入。两个下拉列表和一个文本输入。下拉列表在显示之前从我的数据库中填充。文本输入是来自用户的新数据。用户将向我的数据库添加新资产,但必须选择项目的制造商和类别 添加资产后,我希望更新资产表。我被困在如何使用表单数据和下拉列表中的现有值插入我的asset_names表中。我需要获取值和用户友好的单词,并从各自的数据库中选择相应的ID INSERT INTO asset_names (asset_name, asset_category_id, asset_manufacture

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

添加资产后,我希望更新资产表。我被困在如何使用表单数据和下拉列表中的现有值插入我的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();

如果我将值硬编码到语句变量中,那么语句就可以工作。现在变量几乎是空的

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

<option value="<?php echo $id;?>"><?php echo $stringversion;?></option>

:新资产制造
!=<代码>:newAssetManufacturer@chris85,我修正了那个打字错误。好吧,那么现在这个代码会怎么样?它抛出了一个错误?插入错误的数据?为什么子查询只需将id作为
选项的值放入表单中。@chris85,发生的情况是,当我提交表单时,字段被插入到数据库中,但变量:newAssetCategory和:newAssetManufacturer的值被输入为0。我不确定0来自哪里。我之所以使用select语句,是因为我需要从下拉列表中获取字符串,并使用它们来查找各自的行ID。我已经根据自动递增的行ID创建了表键。为什么需要将值设置为字符串而不是整数?
"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 );