sql >> Database teknologi >  >> RDS >> Mysql

PHP mysqli forberedt erklæring til lagret procedure uden parameter

Den måde, lagrede procedurer fungerer på med forberedte erklæringer, er lidt mere kompliceret. PHP-manual angiver, at du skal bruge sessionsvariabler (MySQL-sessioner, ikke PHP)

Så du kunne gøre det med

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

Bemærkning:

Jeg anbefaler at omskrive denne procedure som en funktion med én IN-parameter, der returnerer INT.



  1. 3 grimme I/O-statistikker, der forsinker SQL-forespørgselsydeevne

  2. Android SQLite problem - tabel ... har ingen kolonne navngivet

  3. Dynamisk SQL vs Stored Procedure

  4. C# MySQL-fejl Kolonneantal stemmer ikke overens med værdiantallet i række 1