PHP PDO mysql如何检查是否创建了存储过程

PHP PDO mysql如何检查是否创建了存储过程,php,mysql,stored-procedures,pdo,Php,Mysql,Stored Procedures,Pdo,这里我有一个故意错误的SQL sintax $conn = new PDO($host.$bd,$user,$pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = ' DROP PROCEDURE IF EXISTS `mySP`; CREATE PROCEDURE `mySP`() BEGIN IF (CALL whatewer()) TH

这里我有一个故意错误的SQL sintax

$conn = new PDO($host.$bd,$user,$pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = '
    DROP PROCEDURE IF EXISTS `mySP`;
    CREATE PROCEDURE `mySP`()
    BEGIN   
        IF (CALL whatewer()) THEN
            /*some*/
        ELSE
            /*go stuf*/
        END IF;
    END;
';  

$result = $conn->prepare($sql); 
$result->execute();

if(!$result){
    echo "BAD";
}else{
    echo "GOOD";
}
问题是:

  • 我的if状态切换到else->“良好”
  • PDO未显示任何错误
  • 未创建存储过程
如果删除第一行如果存在
mySP
,则删除程序
然后PDO显示错误

问题是:


如何检查是否确实创建了一个存储过程,但如果还存在,则使用Drop过程?

prepare()/execute()
用于单个参数化语句。您正在执行两个DDL语句,为此,您应该使用
PDO::exec()
尝试您所拥有的一切,将其包装为
$conn->exec('all your SQL')
,假设实际SQL不接受用户输入参数。我现在已经试过$result=$conn->exec($sql);但仍然有同样的问题。为了生存,我现在使用:$result=$conn->exec($sql)$结果=$conn->exec(“调用mySP();”);