我现在学习MYSQL,问下mysql储存过程如何建立和使用,最好写成$sql="sql语句",$re=mysql_query($sql);谢谢

解决方案 »

  1.   

    建议你先自己看一下文档中的例子。http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
    20. 存储程序和函数
    20.1. 存储程序和授权表
    20.2. 存储程序的语法
    20.2.1. CREATE PROCEDURE和CREATE FUNCTION
    20.2.2. ALTER PROCEDURE和ALTER FUNCTION
    20.2.3. DROP PROCEDURE和DROP FUNCTION
    20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION
    20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS
    20.2.6. CALL语句
    20.2.7. BEGIN ... END复合语句
    20.2.8. DECLARE语句
    20.2.9. 存储程序中的变量
    20.2.10. 条件和处理程序
    20.2.11. 光标
    20.2.12. 流程控制构造
    20.3. 存储程序、函数、触发程序和复制:常见问题
      

  2.   

    就因为这个不太懂,我就是不会怎么能和PHP结合的问题!望解答!
      

  3.   

    <?php
    // Connecting, selecting database
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
        or die('Could not connect: ' . mysql_error());
    echo 'Connected successfully';
    mysql_select_db('my_database') or die('Could not select database');// Performing SQL query
    $query = 'SELECT * FROM my_table';
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());// Printing results in HTML
    echo "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "\t<tr>\n";
        foreach ($line as $col_value) {
            echo "\t\t<td>$col_value</td>\n";
        }
        echo "\t</tr>\n";
    }
    echo "</table>\n";// Free resultset
    mysql_free_result($result);// Closing connection
    mysql_close($link);
    ?>
    PHP 则建议到PHP的版块去问一下。
      

  4.   

    DELIMITER $$ 
    drop procedure if exists  touch_; 
    CREATE PROCEDURE `touch_`(IN a varchar(20),IN b varchar(20),IN c varchar(20)) BEGIN 
    SET  a ="3"; 
    SET  b ="2"; 
    SET  c ="1"; set @v_flag = concat("select * from t where id!=",a," and  id!=",b," and id!=",c); 
    prepare ee from @v_flag; 
    EXECUTE ee ; 
    DEALLOCATE PREPARE ee; 
    END$$ 
    call touch_(‘1’,’2’,’3’);
    存储过程只能在begin 和end 之间设置变量值。
      

  5.   

    $query = 'SELECT * FROM my_table';
    改成$query = 'Call myproc(1,2,3)';
      

  6.   

    Call myproc(1,2,3)什么意思?还有怎么跟SELECT * FROM my_table有关系,谢谢,麻烦了
      

  7.   


    Call myproc(1,2,3) 你可以认为是一句SQL语句。SELECT * FROM my_table 也是一个SQL语句。
    建议你还是先看一下手册吧。先了解一下什么是存储过程,如何调用和操作。否则很难解释给你听了。这些都是基础的。
    先看完1楼的文档,然后再来讨论。
      

  8.   

    是不是吧SELECT * FROM my_table 封装成Call myproc()的函数后,以后调用这个函数就OK乐?
      

  9.   

    可以这么说, 把所有sql语句封装成储存过程或函数, 然后调用就OK
      

  10.   


    呵,估计有人给你气晕了存储过程名字为myproc,调用如下:
    Call myproc(1,2,3) -- 1,2,3为输入的3个参数在你的“最好写成$sql="sql语句",$re=mysql_query($sql);”,只需把$sql="sql语句"--》$sql="Call myproc(1,2,3)"
      

  11.   

    按上述所说写的简单代码,可连SQL语句都不执行!!望解答!!$sql1="DELIMITER $$ 
    drop procedure if exists  touch_; 
    CREATE PROCEDURE `touch_`() 
    BEGIN 
    set @v_flag = concat('select * from user' ); 
    prepare ee from @v_flag; 
    EXECUTE ee ; 
    DEALLOCATE PREPARE ee; 
    END$$ 
    "; 
    $ree1=mysql_query($sq1);
    var_dump($ree1);
    $sql="Call touch_()";                           
    $re=mysql_query($sql);
    $row=mysql_fetch_array($re);
    echo $row[0];
    echo "<br>";
    echo $row[1];
      

  12.   

    在mysql命令行执行上面的存储过程创建语句,在程序中只要调用mysql_query("call Call touch_()");