将var name解析为字符串文字,以将字符串的一部分分配给新的var

时间:2017-04-11 06:22:27

标签: php preg-replace

我将数据库表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' ],例如在引用的数据库表中作为id#1。现在我想从$ _POST var名称中提取 1

我假设我需要使用preg_replace,但是不能考虑如何在模式中使用var name来提取id #adored。我一直在谷歌搜索,似乎无法找到我所需要的。那么如何在preg_replace中将var名称解析为文字字符串以提取并将其中的一部分分配给新的var?

2 个答案:

答案 0 :(得分:4)

虽然不像你问的那样是一个preg-replace解决方案,如果我正确地读了你的问题,你希望能够对表中的行做一些附加的id号。

如果是这样,您可以首先在表中查询最高值id,并将其用作for循环中的计数器。然后使用for循环,你可以循环到表中的所有行,直到你的$ _POST [&#39; buttonDisplay_1&#39;找到/匹配变量。

匹配后,您可以获取返回的查询行的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'";
}

答案 1 :(得分:1)

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

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

如果您发布数据,您将获得一个包含输入字段数据的数组。所以,如果你写

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

它将逐行返回输入字段的数据。