<?php
$link=mysql_connect("localhost","root","mysql");

mysql_select_db("sports_shop",$link);

mysql_query("set names gb2312");
$username=$_POST['username'];
$pwd=$_POST['password'];
$sql=mysql_query("call login('liuyu','1111111',@message);'",$link);
$sql = mysql_query("select @message;",$link);
$row = mysql_fetch_row($sql);
if(mysql_num_rows($sql)==1)
echo '1';                            //这里输出了1,说明有结果,可是row[0]网页上什么都不显示!
echo $row[0];
?>在mysql中执行
call login('liuyu','111111',@message);
select @message;显示为
@message
--------
exsits           6b
存储过程为
DELIMITER $$;DROP PROCEDURE IF EXISTS `sports_shop`.`login`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `login`(in username varchar(40),in userpassword varchar(20),out message varchar(40))
BEGIN
declare v_i int;
select count(*) into v_i from client where LoginName=username and Pwd=userpassword;
if v_i =0 then
 set message = 'ok';
else
 set message = 'exists';
end if;
END$$DELIMITER ;$$

解决方案 »

  1.   

    $sql=mysql_query("call login('liuyu','1111111',@message);'",$link); 
    写错了,密码多写了一个1,总之上下存储过程是一致的
      

  2.   

    $sql = mysql_query("select @message;",$link);这句改一下试试:
    $sql = mysql_query("select @message as msg;",$link);
    echo $row["msg"];
      

  3.   

    “$sql = mysql_query("select @message;",$link); ”
    ----------------
    这样调用的话,其实是作为一个查询结果集返回的(跟查询一个表返回结果集类似)
    你可以试下按你上面的方法操作一个查询一个表,看是否能得到结果没有?
      

  4.   

     <?php
    $link=mysql_connect("localhost","root","mysql");

    mysql_select_db("sports_shop",$link);

    mysql_query("set names gb2312");
    $username=$_POST['username'];
    $pwd=$_POST['password']; $sql = mysql_query("call login('liuyu','1111111',@message);'");
    $sql = mysql_query("select @message;");
    $row = mysql_fetch_row($sql);
    if(mysql_num_rows($sql)==1)
    echo '1';             
    echo $row[0];
    ?>
      

  5.   

    查表可以得到,即即使删除了两个$sql里的link还是一样
      

  6.   

    继续求教,为什么得不到值,难道说select @message返回的不是结果集?
      

  7.   

    直接把表用在
    mysql_query("set names gb2312"); 
    $username=$_POST['username']; 
    $pwd=$_POST['password']; 
    $sql=mysql_query("call login('liuyu','1111111',@message);'",$link); 
    $sql = mysql_query("select @message;",$link); 
    $row = mysql_fetch_row($sql); 
    if(mysql_num_rows($sql)==1) 
    echo '1';                            //这里输出了1,说明有结果,可是row[0]网页上什么都不显示! 
    echo $row[0]; 
    ?> 
    这里面,能正常显示“$row[0]”的值吗?
      

  8.   

    直接执行这两句call login('liuyu','1111111',@message);
    select @message;数据库里显示为
    @message 
    -------- 
    exsits          6b可是row【0】什么都没有,可是row里明明有一个值的啊
      

  9.   

    先不用这些变量来处理,先直接取表数据看看是否能正常显示不:    $sql = mysql_query("select field_name from tb_name where ...");
        $row = mysql_fetch_row($sql);
        if(mysql_num_rows($sql)==1)
            echo '1';             
        echo $row[0];
      

  10.   

    取表是可以的,难道说存储过程select @message;生成的不是结果集?
      

  11.   

    试下把@message直接写成固定值是否能正常获取:
    $sql = mysql_query("select @message;",$link);  -->$sql = mysql_query("select 'test';",$link);
    $row = mysql_fetch_row($sql); 
    if(mysql_num_rows($sql)==1) 
      

  12.   

    十分感谢 vinsonshen
    已经搞定了^-^