SQL/php-存储过程-一个过程会让我的其余代码出错!
SQL版本-5.0.77 使用PHPMyAdmin 存储过程代码:SQL/php-存储过程-一个过程会让我的其余代码出错!,php,mysql,Php,Mysql,SQL版本-5.0.77 使用PHPMyAdmin 存储过程代码: CREATE PROCEDURE checkStudent (IN email VARCHAR(50)) BEGIN SELECT email, name, gender, dob, status FROM studentCOMP WHERE studentCOMP.email = email; END$$ PHP代码: //$exist = mysql_query("SELECT * FROM studentCOMP WH
CREATE PROCEDURE checkStudent (IN email VARCHAR(50))
BEGIN
SELECT email, name, gender, dob, status
FROM studentCOMP
WHERE studentCOMP.email = email;
END$$
PHP代码:
//$exist = mysql_query("SELECT * FROM studentCOMP WHERE (email ='$email')");
$exist = mysql_query("CALL checkStudent('$email')");
$rowresult = mysql_num_rows($exist);
if($rowresult == 0) //if 0 results are returned from the earlier query
{
echo "Please enter a valid email address- Student does not exist";
}
else
{
$exams = mysql_query("
SELECT StudentExamLink.examID, examCOMP.date, examCOMP.medallevel, examCOMP.mark, examCOMP.dancestyle
FROM StudentExamLink
INNER JOIN examCOMP
ON StudentExamLink.examID=examCOMP.examID
WHERE (StudentExamLink.email ='$email')
");
$rowresult2 = mysql_num_rows($exams);
echo "$rowresult2 number of rows";
}
if ($rowresult2 == 0)
{
echo "no exams taken";
}
嗨,我想知道是否有人能帮我解决这个问题。当我用
$exist = mysql_query("SELECT * FROM studentCOMP WHERE (email ='$email')");
替换存储过程一切正常。但是当我在存储过程中替换时,它会导致代码片段
$exams = mysql_query("
SELECT StudentExamLink.examID, examCOMP.date, examCOMP.medallevel, examCOMP.mark, examCOMP.dancestyle
FROM StudentExamLink
INNER JOIN examCOMP
ON StudentExamLink.examID=examCOMP.examID WHERE (StudentExamLink.email ='$email')
");
不返回任何行,即使它应该返回一些。存储过程是锁定表还是什么?我不知道如何修复它,当我在其他页面上这样做时,它也会打乱后续的查询
提前感谢我从未对返回结果集的存储过程有过太多的喜爱 最好在存储过程中创建一个临时表,并在php代码中从中进行选择
CREATE PROCEDURE checkStudent (IN email VARCHAR(50))
BEGIN
CREATE TEMPORARY temptable
SELECT email, name, gender, dob, status
FROM studentCOMP
WHERE studentCOMP.email = email;
END$$
然后
$query = "SELECT * FROM temptable";
$exams = mysql_query($query);
谢谢,我明天就试一试。因此,我必须在您给出的$query之前调用checkStudent过程?这样做现在会返回0个结果……我稍后会再次尝试,但现在这并不重要,我可以使用键入的查询,但谢谢一些错误检查可能有助于了解发生了什么。如果添加
if(!$tests)echo mysql_error(),是否会打印错误代码>在那一秒之后mysql\u query()
?如果您对第一个进行类似的操作会怎么样?mysql\u查询(“callcheckstudent(“$email”)代码>用这句话,你正在向一个受伤的世界敞开心扉。这个查询是向SQL injection.Matt打开的——当我把它放在第一个mysql查询之后,我得到了“不同步的命令”;你现在不能运行这个命令,在第二次之后,我没有得到任何额外的信息