建议你先自己看一下文档中的例子。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. 存储程序、函数、触发程序和复制:常见问题
就因为这个不太懂,我就是不会怎么能和PHP结合的问题!望解答!
<?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的版块去问一下。
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 之间设置变量值。
$query = 'SELECT * FROM my_table'; 改成$query = 'Call myproc(1,2,3)';
Call myproc(1,2,3)什么意思?还有怎么跟SELECT * FROM my_table有关系,谢谢,麻烦了
Call myproc(1,2,3) 你可以认为是一句SQL语句。SELECT * FROM my_table 也是一个SQL语句。 建议你还是先看一下手册吧。先了解一下什么是存储过程,如何调用和操作。否则很难解释给你听了。这些都是基础的。 先看完1楼的文档,然后再来讨论。
是不是吧SELECT * FROM my_table 封装成Call myproc()的函数后,以后调用这个函数就OK乐?
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. 存储程序、函数、触发程序和复制:常见问题
// 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的版块去问一下。
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 之间设置变量值。
改成$query = 'Call myproc(1,2,3)';
Call myproc(1,2,3) 你可以认为是一句SQL语句。SELECT * FROM my_table 也是一个SQL语句。
建议你还是先看一下手册吧。先了解一下什么是存储过程,如何调用和操作。否则很难解释给你听了。这些都是基础的。
先看完1楼的文档,然后再来讨论。
呵,估计有人给你气晕了存储过程名字为myproc,调用如下:
Call myproc(1,2,3) -- 1,2,3为输入的3个参数在你的“最好写成$sql="sql语句",$re=mysql_query($sql);”,只需把$sql="sql语句"--》$sql="Call myproc(1,2,3)"
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];