Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP mysqli a préparé une instruction pour une procédure stockée sans paramètre

La façon dont les procédures stockées fonctionnent avec des instructions préparées est un peu plus compliquée. Manuel PHP indique que vous devez utiliser des variables de session (sessions MySQL, pas PHP)

Vous pouvez donc le faire avec

$connect=&ConnectDB();
// bind the first parameter to the session variable @uid
$stmt = $connect->prepare('SET @uid := ?');
$stmt->bind_param('s', $uid);
$stmt->execute();

// bind the second parameter to the session variable @userCount
$stmt = $connect->prepare('SET @userCount := ?');
$stmt->bind_param('i', $userCount);
$stmt->execute();

// execute the stored Procedure
$result = $connect->query('call IsUserPresent(@uid, @userCount)');

// getting the value of the OUT parameter
$r = $connect->query('SELECT @userCount as userCount');
$row = $r->fetch_assoc();               

$toRet = ($row['userCount'] != 0);

Remarque :

Je recommande de réécrire cette procédure en tant que fonction avec un paramètre IN qui renvoie INT.