Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Api сайта
maax  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 119
Пользователь №: 41664
На форуме: 2 года, 19 дней
Карма:




Нагуглил пример своего api для сайта с таким кодом

файл api.php:

<?php 
require_once 'classes/Auth.class.php';

$mysite = new Auth\User;

function Error($p1, $p2) {
exit('{"error":'.$p1.', "text":"'.$p2.'"}');
}

if ($_SERVER['REQUEST_URI'] == '/') {
$Page = 'index';
$Module = 'index';
} else {
$URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$URL_Parts = explode('/', trim($URL_Path, ' /'));
$Page = array_shift($URL_Parts);
$Module = array_shift($URL_Parts);


if (!empty($Module)) {
$Param = array();
for ($i = 0; $i < count($URL_Parts); $i++) {
$Param[$URL_Parts[$i]] = $URL_Parts[++$i];
}
}
}


if ($Module == 'users') {

if (!$Param['username']) Error(1, 'Не указан логин пользователя');
if (!$Param['param']) Error(2, 'Не указан параметр метода');

$Array = array('name', 'regdate', 'id');
$Exp = explode('.', $Param['param']);
foreach($Exp as $key) if ($Param['param'] != 'all' and !in_array($key, $Array)) Error(3, 'Параметр указан неверно');


if ($Param['param'] == 'all') $Select = $Array;
else $Select = $Exp;
foreach ($Select as $key) $SQL .= "`$key`,";
$SQL = substr($SQL, 0, -1);

$Row = $mysite->getApiInfo($SQL, $Param[username]);

if(!$Row) Error(4, 'Пользователь указан не верно');
echo json_encode($Row , JSON_UNESCAPED_UNICODE);
}


else Error(0, 'Метод не указан');


?>


и запрос в БД

public function getApiInfo($SQL, $par)
{


$sql = "SELECT " .$SQL. " FROM users WHERE username = ? ";

$result = $this->db->prepare($sql);
$result->bindParam(1, $par);
$result->execute();
$myrow = $result->fetch();

return $myrow;
}


вроде работает но в ответ отправляет еще лишнее что совсем не нужно вроде как

например если вбить в url что бы узнать id:

https://site.ru/api.php/users/username/maax/param/id

то по идее должно вернуть просто {"id":"1"} а в ответ {"id":"1","0":"1"}

или так же вбиваю name

https://site.ru/api.php/users/username/maax/param/name

должно вернуть {"name":"Максим"} и опять получаю {"name":"Максим","0":"Максим"}

в чем может быть проблема?

Это сообщение отредактировал maax - 5.04.2017 - 12:17
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2412
Пользователь №: 26852
На форуме: 6 лет, 5 месяцев, 7 дней
Карма: 131




"$myrow = $result->fetch();" - что отдает функция "fetch()", может там "mysql_fetch_array"? проверь, mysql_fetch_assoc используй для выдачи результата....
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maax  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 119
Пользователь №: 41664
На форуме: 2 года, 19 дней
Карма:




walerus

че то я не понял куда мне это написать mysql_fetch_assoc, в pdo же этого ничего не должно быть
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26461
Пользователь №: 21350
На форуме: 7 лет, 5 месяцев, 8 дней
Карма: 739




Цитата
$myrow = $result->fetch();


просто обращайся как

$myrow->id


почитай http://php.net/manual/ru/pdostatement.fetch.php

по дефолту стоит аргумент PDO::FETCH_BOTH - возвращается ассоц и индексный массивы

а так тока ассоциативный
$myrow = $result->fetch(PDO::FETCH_ASSOC);



--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maax  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 119
Пользователь №: 41664
На форуме: 2 года, 19 дней
Карма:




Игорь_Vasinsky

туплю чет страшно

если я пишу fetch(PDO::FETCH_ASSOC)

то получаю

Fatal error: Uncaught Error: Class 'Auth\PDO' not found in /.../.../..../..../classes/Auth.class.php:



начало этого файла такое

namespace Auth;

class User
{
......


Это сообщение отредактировал maax - 5.04.2017 - 14:00
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maax  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 119
Пользователь №: 41664
На форуме: 2 года, 19 дней
Карма:




или убрать namespace Auth; нафиг, в нем вся беда, правда не знаю зачем он вообще)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maax  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 119
Пользователь №: 41664
На форуме: 2 года, 19 дней
Карма:




че ж никто не сказал что надо поставить перед PDO::FETCH_ASSOC вот такую хрень - \, сложный вопрос что ли был?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2412
Пользователь №: 26852
На форуме: 6 лет, 5 месяцев, 7 дней
Карма: 131




maax
Ну ты блин даешь laugh.gif
Тебе подсказали в чем проблема и как ее решить, я "обычными" запросами(т.к. про PDO ни слова), Игорь дал ответ с использованием PDO со ссылкой на даташит, а в итоге все оказались виноваты cool.gif
Но не суть, главное разобрался, правда я про "слеш" в описании ничего не нашел... нафиг он там нужен то?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9018
Пользователь №: 26630
На форуме: 6 лет, 5 месяцев, 20 дней
Карма: 616




Цитата (walerus @ 6.04.2017 - 00:40)
правда я про "слеш" в описании ничего не нашел... нафиг он там нужен то?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2412
Пользователь №: 26852
На форуме: 6 лет, 5 месяцев, 7 дней
Карма: 131




killer8080
Спасибо cool.gif
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26461
Пользователь №: 21350
На форуме: 7 лет, 5 месяцев, 8 дней
Карма: 739




maax
я тебя запомнил.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maax  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 119
Пользователь №: 41664
На форуме: 2 года, 19 дней
Карма:




Игорь_Vasinsky

запомнил по поводу? biggrin.gif я вроде не на кого тут не наезжал,даже сам разобрался
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса