解析变数名称作为字符串字面量来分配字符串的一部分,新的变种

问题描述:

我附上一个数据库表id号按钮动态呈现,就像这样:解析变数名称作为字符串字面量来分配字符串的一部分,新的变种

echo '</div><!-- close formRowDiv -->'; 
echo '<div class="buttonDiv">'; 
echo '<input type="submit" id="buttonUpdate_' . $row[ 'id' ] . '" name="buttonUpdate_' . $row[ 'id' ] . '" class="button" value="Update Trouble Log Entry">'; 
echo '</div><!-- closes updateDiv -->'; 

这样可以在点击,当我结束了$_POST[ 'buttonUpdate_1' ]为例如在引用的DB表中的id#1。现在我想从$ _POST var名称中提取

我假设我需要使用preg_replace,但无法考虑如何在模式中使用字面上的var名称来提取附加的ID#。我一直在用谷歌搜索,似乎无法找到我所需要的。那么如何在preg_replace中将一个var名称解析为文字字符串来提取并将它的一部分分配给一个新的var?

虽然不是像您问的替代解决方案,但如果我正确地阅读您的问题,您希望能够使用附加的ID号对表中的行进行操作。

如果是这样,您可以先查询表中最高值的id并将其用作for循环中的计数器。然后使用for循环,您可以遍历表中的所有行,直到找到/匹配$ _POST ['buttonDisplay_1']变量中的附加ID。

一旦匹配,您就可以抓取返回的查询行的ID号,并对抓取的ID号进行任意操作。可能类似于:

$sql_query_to_find_high_id = "SELECT * FROM table ORDER BY id DESC LIMIT 1"; 
    $result=mysqli_query(dbcon(), $sqlQHighId); 
    while ($row=mysqli_fetch_array($result)){high_id_number=$row['id'];} 

查找表中分配的最高ID。然后循环使用高ID号作为你的计数器,你可以:

for($i=0; $i<$high_id_number; $i++){ // cycle thru all rows in table to find a match for ID appended to $_POST[ 'buttonDisplay_1' ] 
    if(isset($_POST["buttonUpdate_$i"])){ 
     $id=$i; 
     $sql_update_statement="UPDATE table SET column=value WHERE id='$id'"; 
} 
+0

这个工作。但超过我认为应该需要。 – commnux

以数组形式命名输入字段。我不知道它的正确名称。无论如何,它看起来像这样:

echo '<input type="text" name="myinput[' . $row[ 'id' ] . ']">'; 

如果你发布的数据,你会得到一个数组与输入字段的数据。所以如果你写

foreach ($_POST['myinput'] as $id => $input) { 
    echo $id; 
    echo $input; 
} 

它会一行一行地返回输入字段的数据。