2013-10-08 6 views
-1

Я пытаюсь получить идентификатор из таблицы пользователя. у меня есть:Заявление MySql, возвращающее неверные результаты

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'"; 
$user_id = intval(mysql_query($retrieve_id)); 

Оператор должен возвращать 1, так что это значение в таблице. Однако он возвращает 6, которая является длиной имени столбца (userid). Это происходит, когда я также запрашиваю другие таблицы.

Как я могу получить значение из таблицы ТОЛЬКО?

+0

'var_dump' ваши переменные. Они не содержат того, что, по вашему мнению, они содержат. – andrewsi

+0

Как насчет $ user_id = intval (mysql_query ($ retrieve_id)) –

ответ

3

Необходимо указать fetch фактический результат запроса, используя mysql_result или mysql_fetch_*.

$result = mysql_query("SELECT userid FROM tb_users WHERE username = '$username'"); 

if (!$result) { 
    die('Could not query:' . mysql_error()); 
} 

$user_id = mysql_result($result, 0); // outputs first row 

Примечание что все mysql_ функции устарели, и вы должны использовать mysqli_ или PDO. Ваш запрос также открыт для SQL-инъекции.

+0

Я использую mysql_real_escape_string. Это должно защитить его правильно? – user2742663

+0

@ user2742663 См. [** красное поле **] (http: // j. mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. – Kermit

0

A) mysql_ * осуждается B), убедитесь, что вы параметризуя ваши входы C), попробуйте следующее:

$result = mysql_query($retrieve_id); 

$user_id=$result["userid"]; 
0

Функция mysql_query возвращает тип ресурса для запроса на выборку. Для получения результатов вы должны использовать функции mysql_fetch_array или mysql_fetch_assoc.

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'"; 
$result = mysql_query($retrieve_id)); 
$row = mysql_fetch_assoc($result)) { 
echo $row['userid']; 
0

Проверьте документы php на mysql_query(). Он фактически возвращает resource, а не просто значение, которое вы запрашиваете.

Но вы не должны использовать mysql_query(), так как он устарел в PHP 5.5, и вы не хотите, чтобы обновлять свой код при обновлении, не так ли?

Вместо этого используйте mysqli_query(), который вернет объект mysqli_result. Затем из этого объекта вы можете получить значения, которые вы ищете, fetch_field()

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