Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2013, 15:29   #1
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию Invalid query: Unknown column '1' in 'where clause'

Invalid query: Unknown column '1' in 'where clause'
PHP код:
$result mysql_query("SELECT * from `works` WHERE iow=`".$works."`") or die("Invalid query: " mysql_error()); 
$rows_max mysql_num_rows($result);
$show_pages 10;
$this_page filter_var($_GET['page'], FILTER_SANITIZE_NUMBER_INT);
if (
$this_page
{
$offset = (($show_pages $this_page) - $show_pages);
}
else
{
$this_page 1;
$offset 0;
}
$query_limited "SELECT * from `works` WHERE iow=`".$works."` ORDER BY id DESC LIMIT $offset$show_pages";
$final_result mysql_query($query_limited);
while (
$row mysql_fetch_assoc($final_result)) {
echo
'<h2>'.$row['name'].'</h2><br>';
echo
''.$row['doer'].'<br>';
echo
'<a href="images/works/'.$row['way'].'"><img src="images/works/'.$row['way'].'" alt="'.$row['name'].'"></a>';
}
if (
$rows_max $show_pages)
{
$r 1;
echo
'<b><h3>Перейти к странице:<br>';
while (
$r <= ceil($rows_max/$show_pages))
{
if (
$r != $this_page)
{          
echo 
'<a href="?page='.$r.'" title="Перейти на страницу '.$r.'">   '.$r.'   </a>';
}
else
{
echo 
'<b>' $r '</b>';
}
$r++;      
}
echo
'</h3></b>';

Здесь пагинация и извлечение из базы данных инфы. $works - $_GET['id'] из шапки. Я решил сделать на одной странице 4 группы (например: мониторы, системные блоки, видео карты, процы)... Хелп ми! В таблице есть запись с колонкой iow (id of work - номер группы) 1 :СССС
Masafi вне форума Ответить с цитированием
Старый 14.05.2013, 15:46   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

ну как бы по англицки сказано - что неверный запрос ибо столбца данных `1` нет в таблице
Код:
iow=`".$works."`
обратные апострофы замените на одинарные кавычки, ибо все что в обратных апострофах MySQL считает за имя столбца
ADSoft вне форума Ответить с цитированием
Старый 14.05.2013, 15:47   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Названия таблиц и полей экранируются обратными кавычками – `iow`.
Значения полей экранируются одинарными кавычками – '$works' + защита от SQL Injection.

Простейшая защита значений:
– строковые параметры: mysql_real_escape_string($works);
– целочисленные параметры: intval($works);
– числовые с плавающей точкой: floatval($works);

Пример безопасного запроса с целочисленным параметром:
PHP код:
"SELECT * 
 FROM `works` 
 WHERE `iow` = '" 
intval($works) . "'" 
Защита от SQL-инъекций
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DataGridView Column Width vovik93 C# (си шарп) 0 03.11.2012 17:30
QTreeWidget last column artush1984 Qt и кроссплатформенное программирование С/С++ 6 23.05.2012 20:38
Unknown on line 0 java_91 PHP 2 04.05.2011 00:16
Unknown Product miscreant Помощь студентам 0 15.10.2010 22:46
Procedure unknown yulia БД в Delphi 9 26.01.2009 01:33