【问题标题】:Increment a count on button click with php form and mysql使用 php 表单和 mysql 增加按钮点击次数
【发布时间】:2021-04-12 13:59:34
【问题描述】:

我是 php 和 mysql 的新手,所以我敢肯定这很简单!

我想根据单击的按钮增加特定条目。我遇到的问题是我不确定如何告诉 mysql 通过 php 增加哪个条目。

我正在使用 while 循环来显示我的表格,然后在每一行的末尾添加一个按钮,该按钮的名称 = $row[id] value = $row[likes]。如果 name 只是一个单词,那么它不会成为问题,但我需要它根据它所在的行而有所不同。(我使用行 id 自动递增,我不显示它但它存在) .

我的 .html:

$host="xxx";
$username="xxx";
$password="xxx";
$db_name="xxx";
$tbl_name="blog";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$result = mysql_query("SELECT * FROM $tbl_name ORDER BY id DESC");

echo "<table id='blog'>
<tr>
<th>Update</th>
<th>Likes</th>
</tr>";

while($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td id='entry'>" . $row['entry'] . "</td>";
    echo "<td id='like'>" . "<form action ='likes.php' method ='post'>" . "<input type='submit' name='$row[id]' value='$row[likes]' />" . "</form>" . "</td>";              
    echo "</tr>"; }
echo "</table>";
mysql_close($con);
?>

我的.php:

<?php
$con = mysql_connect("xxx","xxx","xxx");
if (!$con) {
    die('Could not connect: ' . mysql_error()); }

mysql_select_db("xxx", $con);

if(mysql_query("UPDATE blog SET likes = likes +1 WHERE id = '$_POST[$id]'")) {
    header('location:blog.php'); }
else {
    echo "Error: " . mysql_error(); }
mysql_close($con);
?> 

我要做的就是将 html 文档中的“input name = $row[id]”与 WHERE id = $_POST[id] 链接起来,这样它就会增加按钮点击时的点赞数。

提前致谢!!

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在表单中使用隐藏的输入来告诉 PHP 端增加哪个条目。

    echo "<td id='like'><form action ='likes.php' method ='post'><input type='hidden' name='id' value='" . (int)$row['id'] . "' /><input type='submit' name='submit' value='" . (int)$row['likes'] . "' /></form></td>";
    

    查询行应该是:

    if(mysql_query("UPDATE blog SET likes = likes +1 WHERE id = '" . (int)$_POST['id'] . "'")) {
    

    请注意,我将 ID 转换为 (int),这样可以防止查询中的 SQL 注入,并在输出时防止 XSS。

    提交按钮对于数据的传输是不可靠的,这是因为在某些情况下,并非所有浏览器都将提交按钮作为 POST/GET 变量发送。

    我注意到的另一件事是$row[likes] 这个语法的使用应该是:

    $row['likes']
    

    如果不包含引号,则 PHP 首先将 likes 视为常量,如果未定义,则返回为字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2011-11-07
      • 1970-01-01
      • 2016-09-28
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多