用了一个星期的PHP,都算有点研究了,基本功能都可以用得很自如,但还有一些原理性问题请大家帮帮忙。1 . 因为初学 PHP ,所以装了 PHP Wind 来研究,很惊讶的发现,竟然没有用存储过程。想当初装 NT 版的 Discuz! 来研究的时候,一大堆的存储过程。难道这就是 PHP 与 Asp.net 的区别?现在的 MySQL 数据库代理商 都不支持存储过程,是否由于 PHP 的不需要?另外,有一些特别复杂的操作,并不是一两 条 SQL 语句能完成的,如果不用存储过程,对于这种情况大家会选用什么方法来完成?2 . 再说回 PHP Wind ,里面用的全是 MyISAM 表,的确,大论坛用 MyISAM 或者在速度上有所保证,但数据表之间就失去了外键,PHP 用的什么方法来保证数据的完整性?3 . 对数据库的连接,好像是 只连接一次,就可以进行多次操作,而且操作命令挺广的,好像在 MySQL 命令下能用的命令都能通过 mysql_query() 来执行似的。PHP的高效是否与此有关?只连接一次,中间多个数据库操作都在同一个连接里完成,而不必像 Asp.net 那样一个数据库操作就要断开一次连接。4 . 之前用 Asp.net 的时候 用习惯了存储过程,现在用 PHP ,竟然发现对 MySQL 的存储过程 支持是如此的差,调用倒是没问题,问题 在于多次调用。按照网上的说法(我自己也证实了),每次调用存储过程,就要关闭一次数据库连接。这样子的话,貌似 PHP 的优势就大打折扣了,一个方法下来打开/关闭了几次的数据库连接,这样子感觉又回到了 Asp.net 去了。说完了,似乎都是关于 MySQL 的。小弟在此先谢过了

解决方案 »

  1.   

    (1)在PHP中写代码不是照样也能完成么。另外,MySQL从5.0版开始已经支持存储过程了。至于说代理商不支持那应该跟PHP无关,因为许多用其它语言比如Java、Python等写的应用,也有很多选用MySQL做数据库服务器的;
    (2)这个不太清楚;
    (3)这个并非PHP的专利,基本上所有的数据库中间件如ODBC、JDBC、ADO等都支持这种用法的,这也是数据库应用中提高效率的最最基本的手段之一。ASP.NET执行一次操作就要断开一次连接?不会吧?那如果执行transction怎么办?
    (4)这个也不清楚。帮你顶吧。
      

  2.   

    另外,偶们公司那些JAVA程序员平时也很少用存储过程,原因不详
      

  3.   

    是有些SQL语句特别长特别复杂,之前都是放在一个存储过程里的,直接调用就可以了。现在不敢确认是否把那些SQL语句改在在PHP代码里,哪位高手有经验的说一下。
      

  4.   

    好像楼主特喜欢存储过程,那你就换个数据库好了,PHP也是支持的。
      

  5.   

    就是把sql语句写在代码里面,用框架可以会有数据库的封装,比如CodeIgniter<?php
    //这样会自动生成sql语句
    $data=array(
    'id'=1,
    'name'='xxx',
    );
    $this->db->insert('my_table',$data);
    ?>还有php本身无法实现数据库连接池,虽然php连接mysql很高效,但是还是有局限的.
    ab -c 1000 -n 10000一下就知道了.
    至于存储过程,还有事务啥的,不同的数据库支持不一样,和php没啥关系吧.
      

  6.   

    是啊,.net用MsSQL经常用存储过程
    php配MySQL我搞到现在也没用上,呵呵
    去年从.net投奔php的,当时也惊讶,习惯就好
    再说现在php用框架开发,很方便
      

  7.   

    花点时间接受语言间的差异吧,.net的很多方法也都是不错的。不过既然开始用php了。(php本身也带了不少问题),就好好习惯吧.