2013-10-08 2 views
0

В основном я пытаюсь проверить, имеет ли пользователь свой идентификатор в базе данных, и если у него есть его там, он обновляет его, ставя $ page в качестве «последней страницы» в базе данных. Он также проверяет, чтобы значение, которое оно установило внутри, теперь меньше, чем $ page, если это не так, как оно ничего не делает.Обновление базы данных, если переменная меньше переменной

Если у пользователя нет там идентификатора, то он должен добавить его с любой $-страницей.

Проблема в том, что она вообще не обновляется в базе данных.

Это код, который я получил до сих пор, у кого есть идеи?

session_start(); 
if(!isset($_SESSION['id'])) { 
header("Location: ../../index.php"); 
} else { 

} 
    include '../../connect.php'; 
    include '../../users_func.php'; 
    $id = $_SESSION['id']; 
    $page = 3; 

    $sql_chk = " select * from html where id = '$id' and lastpage = '$page' "; 
    $rs_chk = mysql_query($sql_chk); 
    $num_chk = mysql_num_rows($rs_chk); 

    if ($num_chk == 0) { 
     mysql_query("INSERT INTO `html` (`id`, `lastpage`) VALUES ('$id', '$page') "); 
    } else { 
     $sql = "UPDATE html SET lastpage='$page' WHERE id='$id' and lastpage < $page"; 
     mysql_query($sql) or die("MYSQL Query Failed : " . mysql_error()); 
    } 
+1

Ваш код уязвим для некоторых довольно неприятных SQL-инъекций. Вы также не должны использовать расширение mysql в PHP, поскольку оно устарело. Изучите PDO или MySQLi и настройте параметры для защиты от атак. – jdp

+0

Я знаю, как преобразовать его в Mysqli, это все, что я должен сделать, чтобы сделать его менее уязвимым? Также это устранит проблему, с которой я столкнулся? –

+1

Не ответит на ваш вопрос, но это все еще очень важно. Вот хорошее объяснение того, как предотвратить SQL Injection, используя PDO или MySQLi: http://stackoverflow.com/a/60496/324307 – jdp

ответ

1

Ваш код слишком многословен, и эти 3 запросы будут заменены одним

INSERT INTO html (id, lastpage) VALUES ($id, $page) 
ON DUPLICATE KEY UPDATE lastpage = IF(lastpage < VALUES(lastpage), VALUES(lastpage), lastpage) 
+0

Итак, я должен заменить свои запросы на этот код? mysqli_query ($ link, "INSERT INTO html (id, lastpage) VALUES ($ id, $ page) ON DUPLICATE KEY UPDATE lastpage = IF (последняя страница

+0

Потому что вообще не работает, и если бы была ошибка подключения к базе данных, она бы сказала на странице. Там больше всего что-то не так. О том, где он говорит, если (lastpage

1

Я знаю, что вы собираетесь изменить код Mysqli или PDO и все, но существующий код следует проверить на наличие ошибок

$result = mysql_query($sql); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

В своем коде, это вполне возможно mysql_num_rows ($ rs_chk) проверяет на недопустимый ресурс $ rs_chk.

+0

Он проверяет внутри connect.php. И да, возможно, это было :) –

Смежные вопросы