php - when - tsql select into table




Come verificare se SELECT EXISTS restituisce o meno un valore? (4)

Sto provando a determinare rapidamente se user_ID è il proprietario di un 'obiettivo'. Credo che la mia query SQL sia buona, ma sto cercando di trovare un buon modo per controllare il risultato!

In questo caso, indipendentemente da ciò che ho inserito per $ obj_id o $ user_id, la mia funzione restituisce true. Presumo che sia perché mysql_num_rows sta contando anche un risultato falso come una riga? Quindi quale codice PHP dovrei usare per verificare se il risultato esiste o no?

Nota che voglio qualcosa di breve ed elegante! So che potrei farlo a lungo (controlla il conteggio (*), restituisci mysql_assoc quindi controlla il valore di conteggio ...) ma è lungo e brutto.

Qualche idea? Grazie!

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";
if (@mysql_num_rows(mysql_query($query))!=1) {
    return false;
} else {
    return true;
}

Il conteggio di quante righe corrispondono ai criteri dovrebbe essere più semplice:

$sql = SELECT COUNT(*) FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id'
$query = mysql_query($sql);
$result = mysql_fetch_row($query);

return $result[0] >= 1;

In questo modo è probabilmente più veloce.

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";

if(mysql_num_rows(mysqli_query($query)) < 1) {
   // Nothing found!
}

Non preoccuparti di ESISTE. L'in-line esiste darà sempre una riga contenente "true" o "false".

Stai cercando "zero righe" o "almeno una riga", quindi cambia la query in qualcosa di simile e poi controlla quante righe vengono restituite

SELECT 1 FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id' LIMIT 1

che dire di questo:

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";

return  mysql_query($query) ? false : true;




sql