$name и LIKE DLE

12
V5
На сайте с 07.05.2015
Offline
0
865

Всем, добрый день!

Начал знакомство с движком dle и появилась проблема

После авторизации у пользователя должна загрузиться таблица из бд, строки в которых есть имя пользователя

на денвере я использовал запрос

nnn = $name;

$LIKEWHAT = "\"%".$nnn."%\"";

$res = $dbh->query('SELECT * FROM shipments where CLIENT_ID LIKE '.$LIKEWHAT.' ORDER BY

И все работало, а когда залил на хост LIKE не срабатывает, не может получить $name и выводит все данные из таблицы, в чем может быть проблема?

PN
На сайте с 22.08.2012
Offline
103
#1
voron543:
Всем, добрый день!
Начал знакомство с движком dle и появилась проблема
После авторизации у пользователя должна загрузиться таблица из бд, строки в которых есть имя пользователя
на денвере я использовал запрос

nnn = $name;
$LIKEWHAT = "\"%".$nnn."%\"";


$res = $dbh->query('SELECT * FROM shipments where CLIENT_ID LIKE '.$LIKEWHAT.' ORDER BY



И все работало, а когда залил на хост LIKE не срабатывает, не может получить $name и выводит все данные из таблицы, в чем может быть проблема?

в том что, видимо, на денвере у вас $name была определена, а тут нет, получается

CLIENT_ID LIKE "%%"
Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
дани мапов
На сайте с 06.09.2012
Offline
204
#2

Если имя кириллицей, то может быть проблема с кодировками.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
PN
На сайте с 22.08.2012
Offline
103
#3
дани мапов:
Если имя кириллицей, то может быть проблема с кодировками.

не может, тогда не была возвращена ни одна строка

V5
На сайте с 07.05.2015
Offline
0
#4

Я ввел всех в заблуждение на самом деле все вот так

На статической странице должен выходить информация по текущему пользователю

например select * from table where table2 like %username%

Я не могу получить имя текущего пользователя username вроде как оно хранится $member_id[name]

если я пишу $username = '$member_id[name]'; то ничего не получаю

Если есть те кто работают на DLE. объясните, как получить имя пользователя в запрос на статическуб страницу

---------- Добавлено 12.05.2015 в 16:27 ----------

proksey-net:
в том что, видимо, на денвере у вас $name была определена, а тут нет, получается
CLIENT_ID LIKE "%%"

Да ,вы правы, $name я задавал явно, а сейчас CLIENT_ID LIKE "%%" не могу получить

LovelAss
На сайте с 05.06.2009
Offline
96
#5

voron543, во-первых проверьте что вы авторизованы на сайте, а во-вторых укажите в каком файле вы пытаетесь получить эти данные.

V5
На сайте с 07.05.2015
Offline
0
#6
LovelAss:
voron543, во-первых проверьте что вы авторизованы на сайте, а во-вторых укажите в каком файле вы пытаетесь получить эти данные.

конечно авторизован, Дынные пытаюсь вывести на статической странице подключив фаил php

<?php

require_once('dbdata.php');

try {
//читаем параметры
$curPage = $_POST['page'];
$rowsPerPage = $_POST['rows'];
$sortingField = $_POST['sidx'];
$sortingOrder = $_POST['sord'];
// $name
//подключаемся к базе
$dbh = new PDO('mysql:host='.$dbHost.';dbname='.$dbName, $dbUser, $dbPass);
//указываем, мы хотим использовать utf8
$dbh->exec('SET CHARACTER SET utf8');

//определяем количество записей в таблице
$rows = $dbh->query('SELECT COUNT(id) AS count FROM shipments');
$totalRows = $rows->fetch(PDO::FETCH_ASSOC);

$firstRowIndex = $curPage * $rowsPerPage - $rowsPerPage;

$nnn = $member_id[name];
$LIKEWHAT = "\"%".$nnn."%\"";

$res = $dbh->query('SELECT * FROM shipments where CLIENT_ID LIKE '.$LIKEWHAT.' ORDER BY '.$sortingField.' '.$sortingOrder.' LIMIT '.$firstRowIndex.', '.$rowsPerPage);

//сохраняем номер текущей страницы, общее количество страниц и общее количество записей
$response->page = $curPage;
$response->total = ceil($totalRows['count'] / $rowsPerPage);
$response->records = $totalRows['count'];

$i=0;
while($row = $res->fetch(PDO::FETCH_ASSOC)) {
$response->rows[$i]['id']=$row['id'];
$response->rows[$i]['cell']=array($row['id'], $row['ADDRESS_ID'], $row['CLIENT_ID'], $row['DELIVERY_DATE'], $row['DELIVERY_TAME'], $row['DRIVER_ID'], $row['COMMENTS']);
$i++;
}
echo json_encode($response);
}
catch (PDOException $e) {
echo 'Database error: '.$e->getMessage();
}

// end of getdata2.php


---------- Добавлено 12.05.2015 в 16:58 ----------

как то странно сообщение форматировалось $nnn = $member_id[name]; должно быть
LovelAss
На сайте с 05.06.2009
Offline
96
#7
voron543:
Дынные пытаюсь вывести на статической странице подключив фаил php

Каким образом подключаете и в каком месте? В шаблоне static.tpl, через {include file="/script.php"} этот массив должен быть доступен. Для теста уберите весь код, кроме


<?php
echo $member_id['name'];

и посмотрите на результат.

V5
На сайте с 07.05.2015
Offline
0
#8
LovelAss:
Каким образом подключаете и в каком месте? В шаблоне static.tpl, через {include file="/script.php"} этот массив должен быть доступен. Для теста уберите весь код, кроме

<?php
echo $member_id['name'];

и посмотрите на результат.

Извините, но я ничего не понял

т.е в static.tpl можно вставить {include file="engine/init.php"} (там используется $member_id['name'])

и тогда можно использовать $member_id['name'] в статических страницх в запросе или как? я только начинаю в этом разбираться, поэтому есть сложности

Mad_Man
На сайте с 10.11.2008
Offline
162
#9

voron543, сорц из комментария #7 имеет отличную дыру под SQL инъекцию. Рекомендую либо нанять человека с мозгами, либо осилить любую ORM с защитой от дурака.

WEMASTER
На сайте с 16.08.2012
Offline
95
#10
Mad_Man:
voron543, сорц из комментария #7 имеет отличную дыру под SQL инъекцию. Рекомендую либо нанять человека с мозгами, либо осилить любую ORM с защитой от дурака.

Или просто использовать prepare. Это же PDO.

Хотя я не понимаю зачем ТС еще раз подключается к базе, если есть объект $db через который можно делать запросы к базе в DLE.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий