PHP: $_GET['id'] = $cat; $result = mysql_query("SELECT * FROM `articles` WHERE categoryid=$cat")or die(mysql_error()); $array = mysql_fetch_array($result)or die(mysql_error()); echo $array; на этот код он ругается так - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Надо проверить, что храниться в переменной $cat. Или лучше вывести на странице сам запрос PHP: echo "SELECT * FROM `articles` WHERE categoryid=$cat"; Потом пробовать скормить полученный запрос mysql.
нужно переменную $cat взять в одинарные кавычки. Вот так '$cat'. и всё должно заработать. Даже с моим практически отсутствующим знанием английского отлично понятно, что ругань направлена на синтаксис в первой строке запроса к БД. P. S. Модераторы уже отчаялись ругаться на подобные названия тем, ибо бесполезно. --- Добавлено --- А первой строке кода не нужно местами поменять то, что рядом со знаком "=" ?
Тут не всё так однозначно, если судить по названию колонки "categoryid", то это числовая колонка, а в поисковом условии числа заключать в кавычки не обязательно. Там, скорее всего, переменная $cat равна NULL или какой-то строке.
Изменил код, напечатал массив ГЕТ, он не пустой. А при выполнении кода PHP: var_dump($_GET); $_GET['id'] = $cat; echo "<br>"."SELECT * FROM `articles` WHERE categoryid=".$_GET["id"]; показывает это
у тебя на второй строке элемент id суперглобального массива $_GET перезаписывается значением переменной $cat проверяй её
И еще, если заменить в запросе идентификатор на цифру, то при выполнении кода, он выводит просто надпись ARRAY ... Напечатал вардампом этот массив я получаю все данные из него как положено.. ТО есть они там присутствуют. Почему он их не выводит нормально, а заменяет словом array? Код (Text): $res = mysql_query("SELECT FROM `articles` WHERE categoryId=2"); $art = mysql_fetch_array($res); --- Добавлено --- в ней null... Странно. --- Добавлено --- Убрал я полностью переменную $cat и суперглобальный массив начал работать нормально.. Видимо я просто намудрил почем зря. Спасибо что помогли решить этот вопрос
про mysql_fetch_array почитай детальнее и да, как бы... юзать mysqlI или PDO --- Добавлено --- эта ф-я возвращает тебе массив, с которым ты далее и должен работать. типа $tmp = mysql_fetch_array($res); echo $tmp['elementMassiva'];
У меня опять проблема, не понимаю в чем суть.. Вот код по добавлению статьи: PHP: echo "<pre>"; var_dump($_POST); echo "</pre>"; if(!empty($_POST['name_m'])){ mysql_query("INSERT INTO `articles` (`categoryId`,`title`,`summary`,`content`,`publicationDate`) VALUES (".$_POST['id'].",".$_POST['name_m'].",".$_POST['summary'].",".$_POST['text'].",".date('d-m-Y').")",$db)or die("Ошибка при добавлении новой статьи - ".mysql_error());} Вот то что он пишет после отправки формы и выполнении кода Зарание спасибо
Во первых, надо смотреть sql который собирается PHP: echo "INSERT INTO `articles` (`categoryId`,`title`,`summary`,`content`,`publicationDate`) VALUES (".$_POST['id'].",".$_POST['name_m'].",".$_POST['summary'].",".$_POST['text'].",".date('d-m-Y').")"; Во вторых, при вставке в sql не цифровых значение, эти значения надо обрамлять кавычками Код (Text): INSERT INTO `articles` (`title`, `content`) VALUES ('Title Example', 'Content Example'); такой код работать не будет Код (Text): INSERT INTO `articles` (`title`, `content`) VALUES (Title Example, Content Example); В тертьих, твой код подвержен sql инъекциям, не надо пользоваться ни mysql_*, ни mysqli_* функциями, надо использовать PDO
хотел сказать, что если учиться, то лучше уж изучать более современные подходы - PDO. как мне кажется
В запросе $cat возьмите в одинарные ковычки, чтобы получилось `categoryid`='$cat'. И что-то не совсем понятно зачем вы в глобальную переменную $_GET['id'] заносите значение переменной $cat. Это кокой-то хитрый ход? Посвятите пожалуйста если не трудно.
А че тут понимать? $_GET['id'] = $cat; $result = mysql_query("SELECT * FROM `articles` WHERE categoryid=$cat")or die(mysql_error()); $array = mysql_fetch_array($result)or die(mysql_error()); echo $array; Смысл в $_GET['id'] заносить $cat? Если ее получить через ссылку: http://blablabla.bla/index.php?id=$cat; При переходе по ссылке и получим, что $_GET['id'] = $cat; Мне не понятно зачем в начале кода это делать. Яб понял если бы было записано: $cat = $_GET[id]; Это понятно что ловим глобальную переменную и заносим ее значение в переменную $cat, а вот в обратной записи смысла вообще не вижу.
Я вот про это: $_GET['id'] = $cat Мне не понятно зачем в начале кода это делать. Яб понял если бы было записано: $cat = $_GET[id]; Про занесение в глобальную переменную обычной переменной, а не про выборку с базы. Там то все понятно.
Вы не правы, не только pdo является современным. Mysqli вполне современный метод работы с базой данных на php. Цитирую с источника все сущего для web http://secure.php.net/manual/ru/ "Внимание! Данное расширение устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL." --- Добавлено --- @ArsNet А цитирование не видел есть кнопочка ?) Я думал это ты написал так. --- Добавлено --- @ArsNet Да у чувака проблемы с пониманием логики и не хватка знаний ему бы взять открыть мануал и почитать )
Я думаю что вот так вот будет запись правильнее: Код (Text): $cat = $_GET['id']; $result = mysql_query("SELECT * FROM `articles` WHERE `categoryid`='$cat'"); $array = mysql_fetch_array($result)or die(mysql_error()); echo $array['id']; А то, что что у вас написано по моему это глупость какая-то. Вы засовываете в переменную $_GET['id'] значение переменной $cat (Подозреваю что она до этого объявлена так и не была). Хотя тут тоже странно почему РНР в током случае не ругается что переменная не известна. Получается Вы присваиваете значение переменной в GET но делаете выборку с базы все равно по чему то по переменной $cat. Первое что надо иметь при программировании это логику. По вашему коду я наблюдаю полное ее отсутствие (прошу прощения если оскорбил, но факт остается фактом). Посмотрите на свой код потом на тот что я вам написал, сравните и подумайте где логика и кокой код логичнее. Если нету в коде логики то это не код а набор операторов и бессмысленной писанины. Учитесь рассуждать логично. И раз уж вы начали использовать в запросе к MySQL `` то используйте их для всех имен столбцов таблицы, а значения переменных выделяйте ''.
Да это пофигу как выводить значение зависит от поставленной задачи смотря что вывести необходимо. Главное чтобы суть человеку была понятна
Теперь чтобы показать массив будем использовать echo. Ломай систему ( echo Array() ). Боюсь только конституция php будет против.