Когда я запускаю свою программу в первый раз, я хотел бы создать следующую процедуру:
$returnCusProcedure = "DELIMITER //
CREATE PROCEDURE GetAllCustomers()
BEGIN
SELECT * FROM CUSTOMERS;
END //
DELIMITER ; ";
if(! $returnCusProcedure )
{
die('Could not create procedure: ' . $conn->error);
}
else
{
echo "Procedure created successfully<br/>";
}
Это говорит о том, что процедура завершилась успешно, но когда я вызываю эту процедуру в MySQL, возвращается, что процедура не существует, я что-то пропустил сверху?
Вы должны фактически выполнить эти операторы SQL. Это было бы что-то вроде:
$cusProcedure = "CREATE PROCEDURE GetAllCustomers()
BEGIN
SELECT * FROM CUSTOMERS;
END"; // <-- No need to change delimiter, at least in this case
$returnCusProcedure = $conn->query($cusProcedure); // <-- Executing SQL
if(! $returnCusProcedure )
{
die('Could not create procedure: ' . $conn->error);
}
else
{
echo "Procedure created successfully<br/>";
}
На самом деле я не создавал процедуру, а определял ее как строку, спасибо @outlyer за то, что обратили на это мое внимание. С тех пор я отредактировал код так, и теперь все работает:
$returnCusProcedure = "DELIMITER //
CREATE PROCEDURE GetAllCustomers()
BEGIN
SELECT * FROM CUSTOMERS;
END //
DELIMITER ; ";
$executeQuery = mysqli_query($conn, $returnCusProcedure );
if($conn->query($executeQuery) == TRUE)
{
die('Could not create procedure: ' . $conn->error);
}
else
{
echo "Procedure created successfully<br/>";
}