没用过,只用过一个事务处理的,
START TRANSACTION;//开始时
for($i=0;$i<10;$i++)
{
  mysql_query("UPDAT `yourTable` SET `value`= 'hello' WHERE `id`='$i'");
}
COMMIT;//结束时以下是手册上的:5.4.4 存储过程和触发器
一个存储过程是能在服务器中编译并存储的一套SQL命令。一旦这样做了,顾客不需要一直重新发出全部查询,而可以参考存储过程。因为查询仅需一次词法分析并且较少的信息需要在服务器和客户之间传送,因此这提供了更好的性能。你与可以通过拥有在服务器中的函数库提升概念上的层次。
一个触发器是当一个特别的事件发生时,被调用的一个存储过程。例如,你可以安装一个存储过程,它在每次从一个交易表删除一条记录时触发,并且当它所有交易被删除时,自动地从一个客户表中删除相应的客户。
计划修改的语言将能处理存储过程,但是没有触发器。触发器通常使每件事情变慢,即使对他们不需要的查询。
为了俩解什么时候MySQL可能得到存储过程,见F 我们想在未来加入到MySQL的事情列表(TODO)。

解决方案 »

  1. 另外手册中没有找到
    $res = mysql_query("call dd()")中的call dd();
    可能是MS-SQL中的吧
      

  2. 更正下:
    mysql_query("START TRANSACTION");//开始时
    for($i=0;$i<10;$i++)
    {
    mysql_query("UPDAT `yourTable` SET `value`= 'hello' WHERE `id`='$i'");
    }
    mysql_query("COMMIT");//结束时
      

  3. 很谢谢你的热情,我要解答的是存储过程,不是事务
    call dd()这是MYSQL的
    exec dd()这才是MS-SQL的
      

  4. echo $row[“这里好象应该是他的字段吧”]."<br>";
      

  5. web_php(C#C++_PHPMYSQL_ASP) :
      试过了,也不行
    用print_r($row)也什么都不出来。
      

  6. mysqli 扩展允许用户访问由 MySQL 4.1 或更高版本所提供的功能。mysqli_connect("localhost", "root", "root");
    mysqli_select_db("test");
    $res = mysqli_query("call dd()");
    while ($row = mysqli_fetch_array($res)) {
    echo $row[0]."<br>";
    }
      

  7. wenshuicao(水草):
      我试过了也不行。
      我在php.ini加了extension=mysqli.dll,但我在我的PHP版本里面并没有找见mysqli.dll文件。要怎么样才能正确加载mysqli.dll文件。(我用的是PHP5)
      

  8. 在php5包里有ext/php_mysqli.dll,可能是你的php5是精简的,重新下php-5.1.4-Win32.zip,此文件大小有8M多,还有注意设置 php.ini 里的 extension_dir = "./"
      

  9. 在phpinfo() 信息里有 mysqli信息mysqli
    MysqlI Support enabled 
    Client API library version  4.1.7  
    Client API header version  4.1.7  
    MYSQLI_SOCKET  /tmp/mysql.sock  Directive Local Value Master Value 
    mysqli.default_host no value no value 
    mysqli.default_port 3306 3306 
    mysqli.default_pw no value no value 
    mysqli.default_socket no value no value 
    mysqli.default_user no value no value 
    mysqli.max_links Unlimited Unlimited 
    mysqli.reconnect Off Off 
      

  10. open php_mysqli.dll extension in php.ini
    replace all your mysql functions with mysqli
    they are the same way to use.
      

  11. 加载php_mysqli.dll成功了。
    但是用wenshuicao(水草) 的方法还是不行
    mysqli_connect("localhost", "root", "root");
    mysqli_select_db("test");
    $res = mysqli_query("call dd()");
    while ($row = mysqli_fetch_array($res)) {
    echo $row[0]."<br>";
    }
      

  12. 注意捕捉错误
    <?
    $link = mysqli_connect("localhost", "root", "root","test");/* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    /* Select queries return a resultset */
    if ($result = mysqli_query($link, "call dd()")) {
        printf("Select returned %d rows.\n", mysqli_num_rows($result));
        while ($row = mysqli_fetch_array($result)) {
    print_r($row[0]);
             echo "<br />";
        }    /* free result set */
        mysqli_free_result($result);
    }/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */mysqli_close($link);
    ?>
      

  13. 现在已经可以了
    我原来用的是php.ini-recommended,后来改用php.ini-dist就可以了。
    wenshuicao(水草)、lantersen(蓝水仁),谢谢你们!!
      

类似问题 »