2013-04-08 1 views
0

Я создаю CMS, в котором, когда вы добавили новую страницу, display_order автоматически захватывает следующее наибольшее число в соответствии с количеством уже имеющихся строк. Вот что я в настоящее время:INSERT mysql_num_rows как переменная

<?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"); 
    } 
} 

?> 

Что этот код делает принимает форму HTML, который я использую на странице под названием edit.php и определения, если это новая страница или просто страница, которая обновляется , Ошибка, которую я получаю, заключается в том, что NOTHING отправляет в базу данных вообще. Если я удаляю строки , $result и $order .. сценарий отлично работает, но переменная display_order не будет установлена ​​на следующее наибольшее число.

+0

// комментарий строку заголовка. Затем опубликуйте, что вы видите – 2013-04-08 16:13:51

ответ

1

Существует ошибка в запросе:

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-вставки. Выйдите из этого входа!