Php 试图在mysql表中创建一个类似的按钮计数器,但更新集不起作用

Php 试图在mysql表中创建一个类似的按钮计数器,但更新集不起作用,php,mysql,xampp,counter,updates,Php,Mysql,Xampp,Counter,Updates,所以我正在做一个学校项目,创建一个公文包展示网站,其中一个主要功能是为图片创建一个类似按钮。我正在使用xampp来托管文件和数据库。我试着让它在每次有人点击按钮时,都会在表中的“likes”列中添加+1,但它似乎不起作用。我对这一点还不熟悉,所以如果能详细解释,我将不胜感激。 这是作为 <h1><?php echo $_SESSION['name'] ?>'s work </h1> <?php $username ="root"; $passwor

所以我正在做一个学校项目,创建一个公文包展示网站,其中一个主要功能是为图片创建一个类似按钮。我正在使用xampp来托管文件和数据库。我试着让它在每次有人点击按钮时,都会在表中的“likes”列中添加+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']."'";

    }
}
?>
的工作

你想知道为什么它会回应这个问题

很简单,你告诉它:

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

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

所以

//在while循环之后添加了此部分
如果(isset($_POST['problem']))
{
$sql=mysqli_query($conn,“updatestaff.image SET likes=likes+1,其中img_id=”)“$\u POST['problem']。””);
如果($sql){
呼应“成功”;
}
否则{
echo“休斯顿,我们有一个问题:”.mysqli_错误($conn);
}
}
  • 用于真实性

echo$sql
再看一遍,然后问问自己。另外,您从未质疑过这当然是教程的目的我特意添加了echo,以查看$\u POST变量是否正确,而且如果您查看表id,您会发现我实际上已经尝试了80多次,并观看了许多解释它的视频,从我的理解来看,代码应该是正确的,我只是一个仍然在学习的学生,所以帮助和解释我的问题,这样我就可以从中学习appreciated@user3158009是的,他是公认的编程新手,正在寻求指导,不要因为他的尝试而惩罚他。@user3158009,不管回声是为了什么<代码>$sql
只是一个字符串……它本身什么都不做。如果希望执行该语句,则需要将其发送到
mysqli\u query()
。我还怀疑你是否想在
while
循环中调用
mysqli\u query
。我个人会选择
SET likes=likes+1
。然后,您只需要查询的行键即可work@RiggsFolly是的,但很难说他们真正想做什么,模式是什么样子。@RiggsFolly再次查看屏幕截图;你很可能是对的,它很可能是
设置likes=likes+1
。感谢大家的帮助,当我尝试设置likes=likes+1时,每次都会增加6,我猜这就是我表中的图像/行数。@RiggsFolly是的,只是在我的表中添加了更多图像并进行了测试,由于某种原因,
likes=likes+1
会在我的表中添加行数。我目前正在使用这行代码
if(isset($\u POST['problem']){$sql=mysqli\u query($conn,“updatestaff.image SET likes=likes+1,其中img_id=”。$\u POST['problem'].“”)}
//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);
      }
}