存储过程中就只是一个最基本的 Select 查询

解决方案 »

  1.   

    而且我使用 mysqli 也遇到同样的问题[code]
    $sql = "call sp_category_get_1(0)"; 
    $results = $db->query($sql); 
    while ($row = $results->fetch_object()) { 
    printf("%s\t%s\n", $row->a_id, $row->a_fullname); 

    $sql = "call sp_category_get_1(0)"; 
    $r = $db->query($sql); 
    echo $db->error;
    while ($row = $r->fetch_object()) { 
    printf("%s\t%s\n", $row->a_id, $row->a_fullname); 

    [/code]
    Lost connection to MySQL server during query
    Fatal error: Call to a member function fetch_object()
      

  2.   

    参照 http://netevil.org/node.php?nid=795 同样不行; 
    -----------------------------------------------------------
    I've recently discovered a few things about how the mysql client library does things that seem a bit silly to me, so I'm going to share them with you. 
    native prepared statements cannot take advantage of the query cache, resulting in lower performance. 
    native prepared statements cannot execute certains types of queries, like "SHOW TABLES" 
    native prepared statements don't correctly communicate column lengths for certain other "SHOW" queries, resulting in garbled results. 
    calling stored procedures multiple times using native prepared statements causes the connection to drop. 
    I recommend that you use the following attribute when working with PDO::MYSQL, available in the current PHP 5.1.3 release candidates and snapshots: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); This causes the PDO native query parser to be used instead of the native prepared statements APIs in the mysql client, and effectively eliminates those problems. I'll admit that the last point could well be a bug in my code; since I'll be at the MySQL Users Conference next week, I should be able to sit down with the right people and fix it. 
    ----------------------------------------------------------------------
    而且我使用 mysqli 也遇到同样的问题
      

  3.   

    一般来说是因为查询时间太长.或者是参数传递不正确,MYSQL不认识语句导致.
      

  4.   

    应该不是, 只是一个简单的本地测试不设置参数, 同样问题里面的语句只有 Select a from t
      

  5.   

    你是用什么连接数据库的,
    连接的具体参数是什么
    mysql(....)
    mysqli(...)
    贴出来看一下。//PDO调用的时候必须关闭上次的连接才能进行下一次
    $db  = new PDO(....);
    $st  = $db->prepare("Call sp_test(0);");
    $st->execute();
    $st->close();
    $db  = new PDO(....);
    $st  = $db->prepare("Call sp_test(1);");
    $st->execute();
    $st->close();当然你也可以这样调用:
    $db  = new PDO(....);
    $st  = $db->prepare("Call sp_test(0);Call sp_test(1);");
    $st->execute();
    $st->close();
      

  6.   

    //PDO 方式
    $dsn = "mysql:dbname={$name};host={$host};port={port}";
    try

    $db = new PDO($dsn, $username, $password); 
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
    $db->query("SET NAMES '{$charset}'");

    catch (PDOException $e) { 
      die('不能连接到数据库!'); 

    // mysqli
    $db = new mysqli(
    $host,
    $username,
    $password,
    $name);$db->query("SET NAMES '{$charset}'");