我正在尝试使用 Slim 框架调用我在 MySQL 中创建的函数。 这是我在 DBHandler.php 中的函数:
public function validarSincronismo($pCnpj, $pLogin, $pImei){
$stmt = $this->conn->prepare("SELECT sincronizar(?,?,?)");
$stmt->bind_param("sss", $pCnpj, $pLogin, $pImei);
$result = $stmt->execute();
$stmt->close();
return $result;
}
这是我的 index.php 中的函数:
$app->post('/validar', function() use ($app) {
$db = new DbHandler();
$cnpj = $app->request->post('cnpj');
$login = $app->request->post('login');
$imei = $app->request->post('imei');
$msg = $db->validarSincronismo($cnpj, $login, $imei);
$response["error"] = false;
$response["message"] = $msg;
echoRespnse(201, $response);
});
我在 phperror.log
中收到以下错误:
[17-Sep-2015 21:12:37 UTC] PHP Fatal error: Call to a member function execute() on boolean in C:\MAMP\htdocs\test\include\DbHandler.php on line 69
我尝试使用 CALL sincronizar(?,?,?);
但它不执行 SQL 函数。
最佳答案
感谢@GustavoStraube 和@NorbertvanNobelen 花时间调查我的问题!我能够使用 SELECT sincronizar()
调用我的 SQL 函数。问题是我在错误的数据库中创建了函数。我的错! :/
所以我最终的工作代码如下所示:
DBHandler.php 中的函数
public function validarSincronismo($pCnpj, $pLogin, $pImei){
$stmt = $this->conn->prepare("SELECT sincronizar(?,?,?)");
$stmt->bind_param("sss", $pCnpj, $pLogin, $pImei);
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
$stmt->close();
// Returns a message
return $result;
}
index.php 中的函数
$app->post('/validar', function() use ($app) {
$db = new DbHandler();
$cnpj = $app->request->post('cnpj');
$login = $app->request->post('login');
$imei = $app->request->post('imei');
$msg = $db->validarSincronismo($cnpj, $login, $imei);
$response["error"] = false;
$response["message"] = $msg;
echoResponse(201, $response);
});
关于php - 从 Slim Framework 调用 Mysql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32640280/