2015-11-25 10 views
5

so che avevamo già un sacco di domande su questo errore, ma non riesco a correggere il mio codice, quindi qualcuno qui mi aiuti a risolvere questo problema. il mio codice come questoAttenzione: mysql_result() si aspetta che il parametro 1 sia risorsa, booleano dato

function login($username, $password) { 
    $user_id = user_id_from_username($username); 

    $username = sanitize ($username); 
    $password = md5 ($password); 

    return (mysql_result(mysql_query("SELECT COUNT (`user_id`) FROM `users` 
     WHERE `username` = '$username' AND `password` = '$password'"),0)==1) ? $user_id : false; 

Non vedo l'ora di sentire da voi ragazzi. Sono un nuovo membro su questo quindi per favore mantieni la risposta il più semplice possibile. grazie.

+2

Echo la query anziché eseguirla, copiarla, incollarla in phpmyadmin o qualcosa di simile e verificare se la query viene eseguita. – Epodax

+1

http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?rq=1 –

+1

Perché diavolo prima trovi user_id per username e dopo fai un secondo eseguire una query per verificare la password anziché eseguirla contemporaneamente? E tra quelle 2 azioni si sanifica il nome utente (quindi può diventare anche diverso tra le 2 query ..) – Svetoslav

risposta

-1

Rimuovere l'ultimo `nella query accanto a false.

+0

dov'è il simbolo 'che intendi? puoi pls risolvere il problema e stampare il codice giusto qui per me? –

+0

return (mysql_result (mysql_query ("SELECT COUNT (' user_id') conteggio DA 'utenti' DOVE 'username' =' $ username 'AND' password' =' $ password '"), 0) == 1)? $ user_id: false; –

+0

grazie per il tuo aiuto ma ancora non funziona per me: (( –

0

Ecco un piccolo remake del metodo.

! Importante - funzioni di MySQL dovrebbero essere sostituiti con MySQLi come driver MySQL è deprecato dopo php 5.5 e rimosso nel nuovo PHP7 ...

function login($username, $password) { 
    $username = sanitize ($username); 
    $password = md5 ($password); 

    $sql = "SELECT `user_id` FROM `users` WHERE `username` = '{$username}' AND `password` = '{$password}'"; 
    $result = mysql_query($sql); 
    if($row = mysql_fetch_assoc($result)) { 
     return $row['user_id']; 
    } 
    return FALSE; 
} 
+0

grazie ma ancora non funziona per me: (( –

+0

seguo questo su il video da YouTube, potrebbero eseguirlo mentre non posso. –

+0

Che cosa non funziona? Che cosa vuoi da questa funzione? – Svetoslav

0

mysql_query restituirà falso in caso di errore, e una risorsa in caso di successo. È necessario controllare il valore di ritorno di mysql_query prima di chiamare mysql_result.

$resource = mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'") or die(mysql_error()); 
if($resource !== false) 
{ 
    return (mysql_result($resource,0)==1) ? $user_id : false; 
} 
return false 

Vorrei anche sfuggire l'ingresso se non l'hai già fatto tramite mysql_real_escape_string()

+0

non funziona per io, ancora errore, ho seguito questo in un video, possono eseguirlo mentre non posso. –

+0

Sospetto che si stia verificando un errore nel database se si sta ancora ricevendo questo avviso. Forse echeggiare l'SQL ed eseguirlo manualmente e risolvere l'errore SQL. Una volta che funziona correttamente, puoi escluderlo. –

0

errore Quello significa che tutto in mysql_result (QUI) è restituisce falsi non un resourse!

È necessario var_dump, quale risultato finale che si ottiene nella query quindi provare eseguire in via PMA di via console da mysql>
Vedrete che nulla viene restituito o un errore nella query.

quindi correggi la tua richiesta e/o codice e sii cool!

se troppo difficile, inserisci nei commenti la tua query resul, lo aggiusterò!

Problemi correlati