代码之家  ›  专栏  ›  技术社区  ›  Pete Alvin

php mssql_init(“mydb”)失败。尝试从PHP调用平凡的存储过程时遇到问题

  •  0
  • Pete Alvin  · 技术社区  · 14 年前

    有没有办法打开php/mysql 5的驱动程序日志记录?是否有日志显示内部正在发生的事情…像所有数据库活动一样?低级错误?

    我正在尝试获取一个简单的PHP页面来调用Windows7上的一个简单的存储过程。当mssql_init()失败时,mysql_error不会返回任何错误消息。

    考虑到这可能是一个权限问题,我创建了一个新用户,得到了相同的结果:

    CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
    GRANT ALL ON *.* TO 'user1'@'localhost';
    

    代码如下:

    create table trace (
        trace varchar(50) not null,
        datet datetime not null
    );
    
    drop procedure if exists mark;
    delimiter !!
    create procedure mark()
    begin
        insert into trace (trace,datet) values ('mark',now());
    end; !!
    delimiter ;
    

    我可以从MySQL Workbench调用SP,很好:

    call mark();
    

    下面是PHP页面:

    <?php
    $connection = mysql_connect('localhost', 'user1', 'pass1');
    if (!$connection) {
        die('Could not connect: ' . mysql_error());
    }
    
    $sel = mysql_select_db('tw');
    if (!$sel) {
        die('Could not select_db: ' . mysql_error());
    }
    
    //$stmt = mssql_init('mark', $connection);
    //$stmt = mssql_init('mark', $sel);
    $stmt = mssql_init('mark');
    if (!$stmt) {
        die('Could not init: ' . mysql_error());
    }
    
    $result = mssql_execute($stmt);
    if (!$result) {
        die('Could not execute: ' . mysql_error());
    }
    
    mysql_free_result($result);
    
    mssql_free_statement($stmt);
    
    mysql_close($connection);
    
    printf("DONE<br />"); 
    ?>
    

    其他概念证明页 插入, *选择,*等,工作正常。只是无法从网页上运行一个愚蠢的存储过程!

    页面输出仅此:

    不能初始化:

    (The PHP mssql_init documentation page 不是很有用,似乎有错别字,因为$link变量没有定义。)

    1 回复  |  直到 14 年前
        1
  •  0
  •   VoteyDisciple    14 年前

    你在用 mssql_init (音符 毫秒 SQL)在上执行存储过程 我的 SQL。

    显然 mssql_init() 函数找不到您的Microsoft SQL Server连接,因为您没有。你应该只使用 mysql_ 用于MySQL连接的函数。

    MySQL没有调用存储过程的特殊功能。 mysql_query('CALL mark()') 会很好的。