使用数组IN()选择查询,并在自定义命名的文本字段中回显结果

时间:2015-11-23 09:27:00

标签: php mysql arrays

我有两张表table_userstable_itemstable_users在多个列中包含商品ID&#39。 table_items保存包含相关属性的商品ID。目的是从table_users获取商品ID,然后在table_items中查找这些商品ID,并在html文本字段中回显结果。

我有一个由变量组成的数组。变量是从table_users获取商品ID的查询结果。

$item1 = $row['item1'];
$item2 = $row['item2'];
$item3 = $row['item3'];

$array = array($item1, $item2, $item3);

要从表table_items获取数据,我使用以下查询(我知道PDO会更好):

$sql = "SELECT * FROM table_items WHERE itemID IN (".implode(',',$array).")";
$result = mysqli_query($connection,$sql) or die ("couldn’t execute query: ".mysqli_error($connection));
$data = mysqli_fetch_assoc($result);

对于table_users的每一列,我想回显一个带有引用列和属性的名称的文本字段(例如,如果列名为item1,则文本字段名称应包含&#34; item1&#34;以及名称属性)。该文本字段的值为$data['column name of table_items']。 所以回应像echo "<input type='text' name='txt???????' value='".$data['column name of table_items']."'>";

这样的东西

问题是,如何从table_items获取正确的值并在正确命名的文本字段中回显它?对数组$array中的所有变量执行此操作?

通过示例澄清

table_user我有专栏&#34;吉他&#34;,&#34;贝司&#34;,&#34;打击乐&#34;其中包含table_items中工具的ID作为参考。在table_items,我有一大堆吉他,贝斯和鼓包,ID,品牌,类型和价格。让我们说用户X有一个1500美元的Fender Stratocaster,一个2000美元的Musicman Stingray和一个2200美元的Sonor Vintage系列。 我希望脚本的输出是textfield txtGuitarBrand值Fender,txtGuitarType值为Stratocaster,txtGuitarPrice值为1500,txtBassBrand值为Musicman,......等等。

我不知道这是否是我必须做的事情&#34;查询&#34;回声&#34;部分或其他内容部分或两者。

1 个答案:

答案 0 :(得分:0)

如果可以创建一个名称作为其键的数组,那么

$array = array('item1' => $item1, 'item2' => $item2, 'item3' => $item3);
$sql = "SELECT * FROM table_items WHERE itemID IN (".implode(',',$array).")";
$result = mysqli_query($connection,$sql) or die ("couldn’t execute query: ".mysqli_error($connection));
while ($row = mysqli_fetch_assoc($result)) {
    $data[$row['itemID']] = $row;
}

foreach ($array AS $colName => $colVal) {
    echo "<input type='text' name='{$colName}' value='{$data[$colVal]['value']}'>";
}

谢谢