无法将表单数据传递给PHP以更新数据库

时间:2017-11-29 11:15:15

标签: php html mysql forms

感谢所有回复的人。我通过你的想法组合更新它。我修改了代码以显示其工作原理。

通过将LIKE按钮值传递给php来实现LIKE功能,以便更新数据库。

显示表格,每行都有一个LIKE按钮:

echo '<table>
           <tr>
            <th>Word ID</th>
            <th>User ID</th>
            <th>User Name</th>
            <th>Word</th>
            <th>Meaning</th>
            <th>Example</th>
           </tr>';

    foreach ($data as $row) 
      { 
        echo '<tr>';
            foreach ($row as $value)
                  { 
                echo '<td>';
                    echo $value;
                echo '</td>';
              } 


    echo '<td>
 <form method="POST" action="'.$_SERVER["PHP_SELF"].'">
<input type="hidden" name="LIKE" value="'.$row['wordID'].'">
<input type="submit" class="btn btn-success" value="Submit">
</form>

                 </td>';

            echo '</tr>';
          }
        echo '</table>';

处理表单提交的代码是:

    if($_POST['submit']) 
 {
$sql = "UPDATE vocab SET likes = likes+1 where wordID = '{$row['wordID']}'"; 

$stmt = $db->prepare($sql);

/* Execute */
            $stmt->execute();

}

3 个答案:

答案 0 :(得分:1)

您在此echo内进行了echo

echo '<td>
            <form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>
            <input type="submit" value="LIKE" name="<?php echo $row["wordID"]; ?></form>
                 </td>';

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>

应该是:

<form method="post" action="'.$_SERVER["PHP_SELF"].'">

答案 1 :(得分:1)

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>

是您在尚未使用<?php标记时使用的sytax。在这里,您已经使用PHP编写了一个echo并且只是再次使用了<?php,而另一个echo,这没有任何意义。

echo '...  <form method="post" action="'.$_SERVER["PHP_SELF"].'">  ...';

是您想要包含php_self值的方式。

同时

<input type="submit" value="LIKE" name="<?php echo $row["wordID"]; ?></form>

应该是

<input type="submit" value="LIKE" name="'.$row['wordID'].'"></form>

但你无法搜索$ _POST [&#39; wordID&#39;],在for循环中搜索$ _POST [$ row [&#39; wordID&#39;]]。

答案 2 :(得分:1)

我会这样做:

<td>
<form method='POST'>
<input type='hidden' name='LIKE' value='".$row['wordId']."'>
<input type='submit' value='Submit'>
</form>
</td>

动作将始终默认为:PHP_SELF所以没有必要添加它,另外添加隐藏字段而不是提交按钮比我更好,因为它更容易阅读,另外添加一个简单的选项,因为你实际上想要添加更多内容形式(完全可能)