Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL PDO SQLSTATE[HY000]:一般错误_Php_Mysql_Pdo - Fatal编程技术网

PHP MySQL PDO SQLSTATE[HY000]:一般错误

PHP MySQL PDO SQLSTATE[HY000]:一般错误,php,mysql,pdo,Php,Mysql,Pdo,请帮助修复以下PHP脚本中的“SQLSTATE[HY000]:常规错误”。另外,请参考MySQL脚本以防出现错误 <?php # MySQL $host = 'localhost'; $username = 'root'; $password = ''; $dbname = 'procdb'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); $pdo->

请帮助修复以下PHP脚本中的“SQLSTATE[HY000]:常规错误”。另外,请参考MySQL脚本以防出现错误

<?php

# MySQL 
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'procdb';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Connected to MySQL Server successfully." . "\n";

    $sql = "CALL prepend('abcdefg', @inOutParam);";
    $stmt = $pdo->query($sql);
    do {
        $rows = $stmt->fetchAll(PDO::FETCH_NUM);
        if ($rows) {
        foreach($rows as $row) {
              print($row[0] . "\n");
            }  
        }
    } while ($stmt->nextRowset());

} catch (PDOException $e) {
    #die("Could not connect to the database $dbname :" . $e->getMessage());
    $error = $e->getMessage();
    echo $error . "\n";
} catch (Exception $e) {
    $error = $e->getMessage();
    echo $error . "\n";
} finally {
    $pdo = null;
    echo "Connection closed." . "\n";
}   

?>
错误的原因是什么?请注意,添加“$stmt->close();”或“$stmt->closeCursor();”没有帮助

请帮忙

谢谢

试试这个,行吗

 $rows = $stmt->fetchAll(PDO::FETCH_NUM);
外部While循环

try {
 $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "Connected to MySQL Server successfully." . "\n";
 $sql = "CALL prepend('abcdefg', @inOutParam);";
 $stmt = $pdo->query($sql);
 $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
 foreach ($rows as $row) {
    foreach ($row as $col) {
        print $col . "\n";
    }
 }
 $stmt->nextRowset();
 $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
 foreach ($rows as $row) {
     foreach ($row as $col) {
        print $col . "\n";
    }
  }
 } catch (PDOException $e) {
   #die("Could not connect to the database $dbname :" . $e->getMessage());
   $error = $e->getMessage();
   echo $error . "\n";
 } catch (Exception $e) {
   $error = $e->getMessage();
   echo $error . "\n";
 } finally {
   $pdo = null;
   echo "Connection closed." . "\n";
 } 

为什么一直切换分隔符?什么是
@inOutParam
?您在哪里声明的?这将只获取第一个结果集。请看-OPs代码几乎与示例完全相同。事实上,给定的代码段基于PHP文档,它没有解决“SQLSTATE[HY000]:一般错误”的问题。请帮助进一步输入。@rescobar,根据您的代码输出的结果与预期不符:已成功连接到MySQL服务器。abcdefg abcdefg连接已关闭。预期输出:已成功连接到MySQL服务器。abcdefg zyxwabcdefg连接已关闭。
try {
 $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "Connected to MySQL Server successfully." . "\n";
 $sql = "CALL prepend('abcdefg', @inOutParam);";
 $stmt = $pdo->query($sql);
 $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
 foreach ($rows as $row) {
    foreach ($row as $col) {
        print $col . "\n";
    }
 }
 $stmt->nextRowset();
 $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
 foreach ($rows as $row) {
     foreach ($row as $col) {
        print $col . "\n";
    }
  }
 } catch (PDOException $e) {
   #die("Could not connect to the database $dbname :" . $e->getMessage());
   $error = $e->getMessage();
   echo $error . "\n";
 } catch (Exception $e) {
   $error = $e->getMessage();
   echo $error . "\n";
 } finally {
   $pdo = null;
   echo "Connection closed." . "\n";
 }