mysqli_query()WHERE - 插入数据

时间:2018-01-13 07:11:18

标签: php html mysqli

我是php的新手,我在这里尝试做的是每当我按下向上箭头按钮时为特定ID(1,10,30 ....)添加+1。

我需要以某种方式将id值(echo $ row [' id'];)添加到mysqli_query()。 有人可以帮忙吗? :)

<?php include("db.php")?>
<?php 
$sql = "SELECT * FROM gifs";
$result = mysqli_query ($db,$sql);
?>
 <?php 
//Fetch data from database
if ($result -> num_rows >0){

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

      <div><?php echo $row["name"];?></div>

            <p id="<?php echo $row['id'];?>">
            <?php echo $row['copygif'];?></p>

$add = $row['id']; //i know this dosnt work...
<i onClick="<?php mysqli_query($db,"UPDATE gifs SET rating = rating + 1 WHERE id= $add ");?>"></i>

我如何将($ row [&#39; id&#39;];)翻译成mysqli_query(id =?)

谢谢

2 个答案:

答案 0 :(得分:0)

很快拼凑起来展示如何实现目标。您不能像以前那样简单地嵌入sql查询 - PHP代码在页面加载时运行(它是服务器端代码),因此将在您看到页面上的任何内容之前执行。事件click是一个客户端事件,因此您需要一些机制将请求从客户端发送到服务器 - 通常可以使用ajax或表单提交。下面的代码没有经过测试,所以你可能会发现很少的错误,但这个想法应该有助于解决问题 - 这只是你可以采用的一种方法。

<?php
    /* include db connection */
    include('db.php');

    /* Process form submission */
    if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['id'] ) ){


        $id=$_POST['id'];

        /* sql query for prepared statement */
        $sql='update gifs set rating = rating + 1 where id=?;';

        /* prepare the sql query */
        $stmt=$db->prepare( $sql );
        if( $stmt ){

            /* bind the placeholder to the id & execute */
            $stmt->bind_param('i',$id);
            $result=$stmt->execute();

        } else {
            exit( 'error: failed to prepare sql' );
        }
    }

    /* select recordset for display */
    $sql = "select * from `gifs`;";
    $result = $db->query( $sql );


?>
<!doctype html>
<html>
    <head>
        <meta charset='utf-8' />
        <title>gifs</title>
        <script>
            /* assign event listeners to `i` elements */
            document.addEventListener('DOMContentLoaded',function(){

                var form=document.forms['gifs'];
                var id=form.querySelector('input[type="hidden"][name="id"]');
                var col=Array.prototype.slice.call( form.querySelectorAll('i.vote') );

                col.forEach(function(node){
                    node.onclick=function(e){
                        /* set the value of the hidden field to the data-id value of current `i` */
                        id.value=this.dataset.id;
                        form.submit();
                    }.bind( node );
                });
            },false );
        </script>
    </head>
    <body>
        <!-- add a basic form, using POST -->
        <form name='gifs' method='post'>
            <!-- hidden field for ID value -->
            <input type='hidden' name='id' />

            <?php
                /* display recordset and create `i` elements that will register vote click */
                if( $result->num_rows > 0 ){
                     while( $row = $result->fetch_object() ){
                        echo "
                            <div>{$row->name}</div>
                            <p id='{$row->id}'>{$row->copygif}</p>
                            <i class='vote' data-id='{$row->id}'>vote</i>";
                     }
                }
            ?>
        </form>
    </body>
</html>

答案 1 :(得分:0)

是的,正如@RamRaider在上面的评论中提到的那样,您可能需要在向上箭头按钮上绑定一个函数并在i中传递$ row [&#39; id&#39;],并点击您可以发送此按钮的按钮id通过ajax到服务器并做你要做的。示例可能看起来像,

<?php while($row = mysqli_fetch_array($result)){
?>   
  <div><?php echo $row["name"];?></div>

        <p id="<?php echo $row['id'];?>">
        <?php echo $row['copygif'];?></p>
         $add = $row['id'];
         <i onClick="upButtonClick($row['id'])"></i>
<?php } ?>