【问题标题】:trying to create a like button counter in mysql table, but UPDATE SET doesnt work试图在 mysql 表中创建一个类似的按钮计数器,但 UPDATE SET 不起作用
【发布时间】:2017-05-19 10:43:10
【问题描述】:

所以我正在做一个学校项目来创建一个作品集展示网站,其中一个主要的必需功能是为图像创建一个喜欢的按钮。我正在使用 xampp 来托管文件和数据库。我试图让它变得如此完美,每次有人单击按钮时,它都会在表格中的“喜欢”列中添加 +1,但它似乎不起作用。我对这个仍然很陌生,因此将不胜感激。 这是作为

的代码块
<h1><?php echo $_SESSION['name'] ?>'s work </h1>
<?php



$username ="root";
$password ="";
$hostname ="localhost";

//connection to database

$conn = mysqli_connect($hostname,$username,$password)
or die("unable to connect to my SQL");

$lastid = $_SESSION['user'];

$image3 = "SELECT * FROM staff.image WHERE `user`='$lastid' ";
$r=mysqli_query($conn, $image3);

while ($row = mysqli_fetch_array($r))
{
?>


<ul id="rig">
    <li>
        <a class="rig-cell">
            <?php   echo '<img src="data:image/jpeg;base64,' . base64_encode( $row['img'] ) . '" align="middle" height=50% " />'; ?> 

            <span class="rig-overlay"></span>
            <span class="rig-text"> <?php   echo $row['img_name']."<br>"; ?></span>




        </a>
            <form method="POST" action=""  class="radiowrapper" >
            <input class="like" type="submit" name="problem" value="<?php echo $row['img_id']; ?>" id="name_<?php echo $row['img_name']; ?>">
            </form>
    </li>
</ul>   

<?php
    if (isset ($_POST['problem']))
    {
        echo $sql = "UPDATE staff.image SET likes='".$row['likes']."'+1 WHERE img_id='".$row['img_id']."'";

    }
}
?>

我有另一个文件,可以让用户上传他选择的图像,并为它写一个名称,并将其保存在 staff.image 中。这里有一些截图

我不太明白这个问题,我一直在尝试不同的方法来编写 UPDATE 函数但无济于事。如果我不清楚您需要更多详细信息,我会立即发布。 提前致谢!

【问题讨论】:

  • echo $sql 再看一遍,然后问问自己。另外,你从来没有问过这个
  • 当然这就是 TUTORIALS 的用途
  • 我故意添加了 echo 以查看 $_POST 变量是否正确,如果您查看表 id,您会发现我实际上已经尝试了 80 多次来完成这项工作,并且看了很多解释它的视频,根据我的理解,代码应该是正确的,我只是一个仍在学习的学生,所以帮助并解释我的问题,以便我可以从中学习将不胜感激
  • @user3158009 是对的,他诚然是编程新手,正在寻求指导,不要因为他的尝试而惩罚他。
  • @user3158009 不管回声是干什么用的。 $sql 只是一个字符串......它本身不会做任何事情。如果您希望执行该语句,您需要将其发送到mysqli_query()。我也怀疑你想在while 循环中调用mysqli_query

标签: php mysql xampp counter updates


【解决方案1】:

您想知道为什么它会回显查询吗?

简单,你告诉它:

if (isset ($_POST['problem']))
{
    echo $sql = "UPDATE staff.image SET likes='".$row['likes']."'+1 WHERE img_id='".$row['img_id']."'";
    ^^^^

}

另外,您从未执行过查询。

所以,

//added this part after the while loop

if (isset ($_POST['problem']))
    {
        $sql = mysqli_query($conn, "UPDATE staff.image SET likes=likes+1 WHERE img_id='".$_POST['problem']."'");


    if($sql){
     echo "Success";
    }
    else {
       echo "<i>Houston, we have a problem:</i> " . mysqli_error($conn);
      }
}

【讨论】:

  • 我个人会选择SET likes = likes + 1。然后,您只需要 Row 键就可以进行查询
  • @RiggsFolly 是的,但很难说他们真正想要做什么以及架构是什么样的。
  • @RiggsFolly 再看截图;你很有可能是对的,它很可能是SET likes = likes + 1
  • 感谢大家的帮助,当我尝试让它 likes=likes+ 1 时,它每次都保持 addign 6,我猜这是我表中的图像/行数。
  • @RiggsFolly 是的,刚刚在我的表中添加了更多图像并对其进行了测试,likes = likes+1 出于某种原因在我的表中添加了行数。我目前正在使用这行代码if (isset ($_POST['problem'])) { $sql = mysqli_query($conn, "UPDATE staff.image SET likes=likes+1 WHERE img_id='".$_POST['problem']."'"); }
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
相关资源
最近更新 更多