2011-02-02 2 views
8

Pouvez-vous me donner l'équivalent de ce code dans MySQLi? Je ne comprends pas bien.MySQLi équivalent du code MySQL

<?php 
if(mysql_num_rows(mysql_query("SELECT userid FROM users WHERE userid = '$userid'"))){ 
//code to be exectued if user exists 
} 
?> 

EDIT: soin d'expliquer à moi ce qui est faux?

$mysqli = new mysqli($host, $username, $pass, $db); 

if ($mysqli->connect_error) { 
    die('The Server Is Busy. Please Try Again Later.'); 
} 
$result = $mysqli->query("SELECT userid FROM users WHERE userid = '$userid'"); 
if ($result->num_rows) { 
    echo "<h1>AWESOME</h1>"; 
} 
+0

Vous pouvez faire avec une requête supplémentaire sélectionnez FOUND_ROWS() –

+3

Ouais. Vous pouvez également boire votre lait par le nez! – Mchl

+0

@mchl - Hehehehe – t0mgs

Répondre

15

Eh bien, dans un sens OO, il passerait de:

if(mysql_num_rows(mysql_query("SELECT userid FROM users WHERE userid = '$userid'"))){ 
    //code to be exectued if user exists 
} 

Pour (en supposant numérique ID utilisateur):

$result = $mysqli->query("SELECT userid FROM users WHERE userid = ".(int) $userid); 
if ($result->num_rows) { 
    //code 
} 

Pour (en supposant chaîne userid):

$result = $mysqli->query("SELECT userid FROM users WHERE userid = '". $db->real_escape_string($userid) . "'); 
if ($result->num_rows) { 
    //code 
} 

Pour (en supposant des déclarations préparées):

$stmt = $mysqli->prepare("SELECT userid FROM users WHERE userid = ?"); 
$stmt->bind_param('s', $userid); 
$stmt->execute(); 
$stmt->store_result(); 
if ($stmt->num_rows) { 
    //code 
} 

Maintenant, c'est en supposant que vous utilisez la version POO de MySQLi (que vous devriez être, à mon humble avis, car cela rend la vie plus facile à bien des égards).

+0

Tout à fait d'accord là-dessus. – Mchl

+0

vous avez oublié quelque chose –

+0

Oh retour du colonel. Tu m'as manqué. – t0mgs

0
$connection = mysqli_connect(...); 

if(mysqli_num_rows(mysqli_query($connection,"SELECT userid FROM users WHERE userid = '$userid'"))){ 
//code to be exectued if user exists 
} 

Way, je le ferais:

$connection = mysqli_connect(...); 

$result = mysqli_query(
    $connection, 
    "SELECT COUNT(*) AS cnt FROM users WHERE userid = '$userid'" 
) or die(mysqli_error()); //use proper error handling here: or die() used for brevity 

$row = mysqli_fetch_assoc($result); 

if($row['cnt'] > 0) { 
    //do your thing 
} 
+0

Non GO mon ami. Essayé avant de demander :) – t0mgs

+0

@WideBlade: Alors pourquoi ne pas indiqué dans la question? –

+0

Ensuite, il doit y avoir quelque chose d'autre qui ne va pas, mais vous nous montrez trop peu d'informations. Avez-vous des messages d'erreur? Est-ce que $ connection est une ressource de lien mysqli? – Mchl

1

je le ferais de cette façon:

$result = $mysqli->query("SELECT userid FROM users WHERE userid = '$userid'"); 
$row = mysqli_fetch_assoc($result); 

if ($row['userid'] > 0) { 
    echo "<h1>AWESOME</h1>"; 
}