繁体   English   中英

仅从表格中更新sql表中的最后一条记录

[英]Only the last record in sql table is being updated from a form

我已经实现了LIKE功能,但是无论用户单击哪行的LIKE按钮,表中的最后一条记录都将得到更新。

我在这里和其他地方都看过与此类似的其他问题,并尝试了建议的补救措施,但没有任何效果。 任何帮助表示赞赏!

这将输出表,并在LIKE按钮的列中显示:

<table class="table table-bordered">
           <tr>
            <th>Word ID</th>
            <th>User ID</th>
            <th>User Name</th>
            <th>Word</th>
            <th>Meaning</th>
            <th>Example</th>
            <th>Likes</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 id="'.$row['wordID'].'" type="submit" class="btn btn-success" value="LIKE">
</form> 

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

        echo '</table>';

我的更新代码是:

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

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

我已经尝试了所有方法,包括添加诸如此类的javascript,以将所需的ID获取到更新代码。 没运气!

echo '<script type="text/javascript">
        function submitForm(){

                var selectButton = document.getElementById( "'.$row['wordID'].'" );
                selectButton.click();
        }
</script>';

选项1:我将更改:

<input name="like" value="'.$row['wordID'].'" 
    type="submit" class="btn btn-success">

并且:

if (!empty($_POST['like'])) {
    $sql = "UPDATE vocab SET likes = likes+1 where wordID = '".$_POST['like']."'"; 

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

选项2:要显示为按钮值,请尝试以下操作:

<input name="like['.$row['wordID'].']" value="LIKE" 
    type="submit" class="btn btn-success">

并在php文件中:

if (!empty($_POST['like'])) {
    foreach ($_POST['like'] as $key => $value) {
        $sql = "UPDATE vocab SET likes = likes+1 where wordID = '".$key."'"; 

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

选项3:

<input name="like_'.$row['wordID'].'" value="LIKE" 
    type="submit" class="btn btn-success">

和:

if (!empty($_POST)) {
    foreach($_POST as $key => $value) {
        if (substr($key, 0, 5) == 'like_') {
            $sql = "UPDATE vocab SET likes = likes+1 where wordID = '".substr($key, 5)."'"; 

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

但是请谨慎使用SQL注入。 在执行查询或使用参数执行准备好的查询之前,应清理$ _POST ['like']值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM