I am new in PHP. Create a stored procedure in Mysql database, now calling from my PHP code I get this error:
SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 6 for routine test.InsertUser is not a variable or NEW pseudo-variable in BEFORE trigger
My procedure is:
DELIMITER $$
CREATE PROCEDURE InsertUser
(
FirstName VARCHAR(100),
LastName VARCHAR(100),
Email VARCHAR(50),
Age INT,
Location VARCHAR(100),
OUT Res INT
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
SET Res = 0;
ROLLBACK;
END;
START TRANSACTION;
INSERT INTO USERS
(firstname,lastname,email,age,location,date)
VALUES
(FirstName,LastName,Email,Age,Location,CURRENT_TIMESTAMP());
COMMIT;
SET Res = 1;
END;
$$
MY PHP Code is:
$connection = new PDO($dsn, $username, $password, $options);
$resStatus=false;
//$res = 0;
$statement = $connection->prepare("CALL InsertUser(?,?,?,?,?,?)");
$statement->bindParam(1, $_POST['firstname'], PDO::PARAM_STR, 100);
$statement->bindParam(2, $_POST['lastname'], PDO::PARAM_STR, 100);
$statement->bindParam(3, $_POST['email'], PDO::PARAM_STR, 100);
$statement->bindParam(4, $_POST['age'], PDO::PARAM_INT, 10);
$statement->bindParam(5, $_POST['location'], PDO::PARAM_STR, 100);
$statement->bindParam(6, $res, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT, 0);
// call the stored procedure
$statement->execute();
if($res == 1)
{
$resStatus = true;
}
My table:
CREATE DATABASE test;
use test;
CREATE TABLE users (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50) NOT NULL,
age INT(3),
location VARCHAR(50),
date TIMESTAMP
);
rowCount()(php.net/manual/en/pdostatement.rowcount.php)