sql >> Base de Datos >  >> RDS >> Mysql

Declaración preparada PHP mysqli para procedimiento almacenado sin parámetro

La forma en que funcionan los procedimientos almacenados con declaraciones preparadas es un poco más complicada. Manual de PHP establece que debe usar variables de sesión (sesiones MySQL, no PHP)

Así que podrías hacerlo con

$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);

Observación:

Recomiendo reescribir este procedimiento como una función con un parámetro IN que devuelve INT.