где пункт не отображает данные

0

Я пытаюсь отображать данные, основанные на более влажных данных в поле, является новым. вместо того, чтобы показывать только новые данные, он отображает все данные. может кто-то указать мою ошибку. большое спасибо

<?php
include("../../js/JSON.php");
$json = new Services_JSON();
// Connect to MySQL database
mysql_connect('localhost', 'root', '');
mysql_select_db(sample);
$page = 1; // The current page
$sortname = 'id'; // Sort column
$sortorder = 'asc'; // Sort order
$qtype = ''; // Search column
$query = ''; // Search string
$new = 1;
// Get posted data
if (isset($_POST['page'])) {
$page = mysql_real_escape_string($_POST['page']);
}
if (isset($_POST['sortname'])) {
$sortname = mysql_real_escape_string($_POST['sortname']);
}
if (isset($_POST['sortorder'])) {
$sortorder = mysql_real_escape_string($_POST['sortorder']);
}
if (isset($_POST['qtype'])) {
$qtype = mysql_real_escape_string($_POST['qtype']);
}
if (isset($_POST['query'])) {
$query = mysql_real_escape_string($_POST['query']);
}
if (isset($_POST['rp'])) {
$rp = mysql_real_escape_string($_POST['rp']);
}
// Setup sort and search SQL using posted data
$sortSql = "order by $sortname $sortorder";
$searchSql = ($qtype != '' && $query != '') ? "where ".$qtype." LIKE '%".$query."%' AND new = 1" : '';
// Get total count of records
$sql = "select count(*)
from act
$searchSql";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$total = $row[0];
// Setup paging SQL
$pageStart = ($page -1)*$rp;
$limitSql = "limit $pageStart, $rp";
// Return JSON data
$data = array();
$data['page'] = $page;
$data['total'] = $total;
$data['rows'] = array();
$sql = "select *
from act
$searchSql 
$sortSql
$limitSql";
$results = mysql_query($sql);
while ($row = mysql_fetch_assoc($results)) {
$data['rows'][] = array(
'id' => $row['id'],
'cell' => array($row['id'], $row['slot'], $row['service'], $row['activity'], $row['department'], $row['company'], $row['address'], $row['user'], $row['item'], $row['filebox'], date('d/m/Y',strtotime($row['date'])), $row['quantity'], $row['type'], $row['new'])
);
}
echo $json->encode($data);
?>
  • 0
    Все записи помечены new = 1 ? Если нет, вы должны посмотреть в SQL Server Profiler или что-то, чтобы увидеть фактический запрос выполняется. Отправьте это здесь.
  • 0
    Какое значение вы публикуете в $ qtype? Ваша статья where должна что-то сказать о новых записях.
Показать ещё 4 комментария
Теги:

2 ответа

4
  • Вы должны отлаживать SQL, рассматривая SQL-запрос, а не код PHP, который создает SQL-запрос. Если вы echo $sql и посмотрите на это, вы, вероятно, увидите все синтаксические ошибки намного легче.

    Вы также можете скопировать и вставить этот SQL и попытаться выполнить его в командном инструменте MySQL, и посмотреть, что происходит, независимо от того, дает ли он результат, вы можете его профилировать или использовать EXPLAIN и т.д.

    /li >
  • Вы используете mysql_real_escape_string() для целых чисел, имен столбцов и ключевых слов SQL (ASC, DESC). Эта функция escape предназначена для экранирования только строковых литералов или литератур даты. Это бесполезно для экранирования некатегорованных целых чисел, имен столбцов, ключевых слов SQL или любого другого синтаксиса SQL.

    Для целых чисел используйте (int) для ввода типов в целое число.

    Для имен столбцов или ключевых слов SQL используйте карту белого списка - см. пример в моей презентации http://www.slideshare.net/billkarwin/sql-injection-myths-and-fallacies

  • Вы не проверяете статус ошибок, возвращаемых любой из ваших функций. Большинство функций в ext/mysql возвращают false, если возникает некоторая ошибка. Вы должны проверить это после каждого вызова функции mysql и сообщать об ошибках, если они происходят.

  • Вы выбираете базу данных с использованием имени константы sample вместо строки с кавычками "sample". Это может быть преднамеренным с вашей стороны, я просто отмечаю это.

  • Кроме того, это не связано с вашими ошибками, но вы действительно должны обновить до PHP 5. PHP 4 уже более двух лет находится в режиме ожидания.

0

после просмотра кода снова и всех предложений, я думаю, что я должен использовать предложение AND, а не WHERE. например код $ searchSql = ($ qtype!= '' && $query!= '')? "where". $qtype. LIKE '% ". $query." %' AND new = 1 ": ''; это предложение WHERE? который в основном переводится на:

$sql = "select * от действия $ searchSql $ sortSql $ limitSql "; < - исходный код

$sql = "select * от действия WHERE компания LIKE '% demo%' AND new = 1 $ sortSql $ limitSql "; < -определенный код

am я на правильном пути?

  • 0
    Я не вижу, как это помогает, но что происходит, когда вы пытаетесь это сделать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню