2015-06-17 3 views
1

Я пытаюсь захватить самый большой идентификационный номер из базы данных. Выход должен быть 15, но он показывает 1. Мой PHP скрипт:Последний идентификатор не отображается

$sql = "SELECT MAX(id) AS id FROM employees"; 

$sql = $db->prepare($sql); 

$lid = $sql->execute(); 

Я выводящий его здесь:

<input type="number" name="id" value="<?php echo $lid; ?>" disabled> 

Я также попытался:

$sql = "SELECT id FROM employees ORDER BY id DESC LIMIT 1"; 

Я попробовал команду на phpMyAdmin. Он работал нормально. Результат был 15. Итак, я подозреваю, что в запросе нет проблем.

В чем проблема?

+3

Вы забыли получить строку с результатом. Фактически '1' (' true') действительно означает, что запрос был выполнен успешно. – jeroen

+0

Добавьте это перед выполнением оператора $ lid = $ sql-> fetch(); –

+0

Используйте 'fetch_assoc()' или 'fetch_object()' перед выполнением вашего запроса – Bruce

ответ

1

Вы должны FETCH т.е. $sql->fetch(PDO::FETCH_ASSOC);

Таким образом, вы должны иметь что-то вроде

$sql = "SELECT MAX(id) FROM employees"; 
$sql = $db->prepare($sql); 
$sql->execute(); 
$result = $sql->fetch(PDO::FETCH_ASSOC); 
print_r($result); 

Примечание: Просто $lid = $sql->execute(); означает, что он назначит ли запрос выполняется или нет.

В запросе выполняется он возвращает истину, которая является 1

Update: Если вы не являетесь обязательным для любых значений вы даже не нужно готовить, вы должны получать его непосредственно, как Адельфия сказала

+0

вам не хватает вашего 'prepare()' –

+0

Ах, спасибо .. Обновлено :) –

+0

Ох ... Спасибо за помощь! –

0
$sql = $db->query("SELECT MAX(id) FROM employees"); 
$result = $sql->fetch(PDO::FETCH_ASSOC); 
print_r($result); 

Нет необходимости в подготовленных операциях, поскольку это статический запрос.

+0

Получил! Благодаря! –

Смежные вопросы