Mysql saklı yordam: PHP kodu çalıştırmak cant

3 Cevap php

Ben aşağıda kullanıcı adı durumunu kontrol etmek yordamını var

DELIMITER $ $;

BIRAKMA İŞLEMLERİ IF tv_check_email $ $ VAR

CREATE PROCEDURE tv_check_email (IN username varchar(50)) BEGIN select USER_ID from tv_user_master where EMAIL=username; END$$

DELIMITER; $ $

benim mysql ön uç aracı bu çalıştırdığınızda, gayet iyi çalışıyor

tv_check_email çağrı ('shyju@techies.com')

But when trying to execute from the PHP page, i am getting an error like "PROCEDURE mydatabase.tv_check_email can't return a result set in the given context"

Bu kadar neden herhangi biri bana söyleyebilir?

Ben PHP version 5.2.6 olduğundan eminim

Şimdiden teşekkürler

3 Cevap

Cody% 100 doğru değildir. Size çıkan dönüş sütunları bağlamak ve bir saklı yordam içinde verileri seçin dönebilirsiniz.

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$stmt = $mysqli->prepare("call tv_check_email(?)");
$stmt->bind_param('s', "shyju@techies.com");
$stmt->execute();

$stmt->bind_result($userid);

while ($stmt->fetch()) {
  printf("User ID: %d\n", $userid);
}

$stmt->close();
$mysqli->close();

Bir OUT parametresi içine sonucu bağlamak gerekiyor.

stored procedures üzerine mysql dokümanlar bakın

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO param1 FROM t;
    -> END;
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @a;
+ ------ +
| @a   |
+ ------ +
| 3    |

+ ------ +

Eğer mysqli PHP kitaplığı kullanmak eğer gerçekte değerini almak için OUT değişken ve başka bir sorgu kullanmak zorunda kalmadan ayarlanmış sonuç alabilirsiniz gibi görünüyor. Bu makalede ayrıntıları kapsar:

http://amountaintop.com/php-5-and-mysql-5-stored-procedures-error-and-solution-qcodo