php - INSERT mysql_num_rows 作为变量

标签 php mysql insert mysql-num-rows

我正在创建一个 CMS,其中当您添加新页面时,display_order 将根据已存在的行数自动获取下一个最大数字。这是我目前拥有的:

<?php

if(isset($_POST['updateContent'])){

    require ("connection.php");
    $sql = "SELECT * FROM pages";
    $result = $conn->query($sql) or die(mysqli_error());

    $content = $_POST['content'];
    $title = $_POST['title'];
    $id = $_POST['id'];

    $order = mysqli_num_rows($result);

    if (empty($id)){
        /** ADD NEW SLIDE*/
        $sql = "INSERT INTO pages (title, content, display_order, visible) VALUES ('".$title."', '".$content.", '".$order.", 0)";
    }else{
        /** UPDATE SLIDE*/
        $sql = "UPDATE pages SET content = '".$content."', title = '".$title."' WHERE id = '".$id."'";
    }

    if ($result){
        header("Location: admin.php");
    }
}

?>

这段代码的作用是获取我在名为 edit.php 的页面中使用的 HTML 表单,并确定它是新页面还是只是正在更新的页面。我收到的错误是根本没有任何内容发布到数据库。如果我删除 $sql$result$order 行..脚本工作正常,但 display_order 变量不会设置为下一个最大的数字。

最佳答案

您的查询有误:

INSERT INTO pages (title, content, display_order, visible)
VALUES ('".$title."', '".$content.", '".$order.", 0)";
                                     ^-- here

应该是:

INSERT INTO pages (title, content, display_order, visible)
VALUES ('".$title."', '".$content."', ".$order.", 0)";
                                   ^-- quote goes here

此外,使用 mysqli 并不能神奇地保护您免受 SQL 插入。转义数据输入!

关于php - INSERT mysql_num_rows 作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15883939/

相关文章:

php - 使用变量作为外键 ID 将数据插入到 2 个表中

php - 如何使用 php 在文件上设置 mime 类型?

sql - 3 MySQL 中的表连接

python - 数据库中的项目(模型)数量与 django RAM 消耗?

mysql - 使用 GROUP_CONCAT 从查询插入表

mysql - 从 2 个 mySQL 数据库到一个

php - Yii Framework 2.0 主键的重复键值

c++ - eclipse-cdt boost\shared_ptr.hpp : no such file in directory, 但它是包含文件的一部分

MySQL :- insert data in two difference database

php - mysql查询: Find least used words