运行包含两个查询的程序。 当我单独运行任何一个查询时,它都可以工作,但是当两个查询都存在于代码中时,它就会中断。

$qry = "SELECT * FROM temp_user WHERE email='$email' AND pin='$pin'";
$result = mysql_query($qry);
$num_rows = mysql_num_rows($result);

$qry2 = "SELECT * FROM email WHERE email='$email'";
$result2 = mysql_query($qry2);
$num_rows2 = mysql_num_rows($result2);

我怎样才能解决这个问题?

编辑:

对于那些问我是什么意思的人,这里有一张图片。

在此处输入图片说明

日志错误。

PHP解析错误:语法错误,/ Users / philipkirkbride / Documents / apps / Today_test / confirm.php,第30行中出现意外的'}'

页面的完整代码为

<?php
include 'connect.php';

$pin = $_GET['pin'];
$email = $_GET['email'];

$qry = "SELECT * FROM temp_user WHERE email='$email' AND pin='$pin'";
$result = mysql_query($qry);
$num_rows = mysql_num_rows($result);
if ($num_rows!=0){
    print "create user and delete temp";
    $sql = "INSERT INTO pin VALUES (DEFAULT, '$pin', '$email')";
    $result = mysqli_query($con,$sql);
    if ( false===$result ) {
      printf("error: %s\n", mysqli_error($con));
    } else {
        // Delete user from temp table
        $sql2 = "DELETE FROM temp_user WHERE email='$email' AND pin='$pin'";
        $delete = mysqli_query($con,$sql2);
        // Make query to see if user is new or existing
        $qry2 = "SELECT * FROM email WHERE email='$email'";
        $result2 = mysql_query($qry2);
        $num_rows2 = mysql_num_rows($result2);
        // Need to add a snippet to add a row to the email table, make sure to check user doesn't have an email already in table
        if($num_rows2==0){
            print "email doesn't exist, create new user."
            // $date = new DateTime;
            // $sql = "INSERT INTO email VALUES ('$email', '$date')";
            // $result = mysqli_query($con,$sql);
        }else{
            print "email exists already";
        }
    }
}else{
    print "Account request not found";
}
// End connection
mysqli_close($con);
?>

===============>>#1 票数:4 已采纳

尝试在调用第二个查询之前调用$ result-> close(),以释放连接。 您的PHP脚本尚未完成执行,并且您先前的结果是保持该连接打开。 通常,优良作法是显式清理此类资源,而不是将其留给运行时。

编辑:我相信@eis是正确的,因为这是较旧的(并且不建议使用,偶然地)mysql_ api,正确的调用实际上是mysql_free_result($ result)。

另一个编辑:我将此评论放在@eis的答案下,但我认为它的文字采用粗体,因为@eis的答案是绝对正确的,不应被否决:

只是为了详细说明整个缓冲与非缓冲之间的关系; 概念是, 缓冲的查询将从数据库将所有结果读回缓冲区,然后自动释放连接(这将同步发生,因此在缓冲的调用返回后,该连接可立即用于另一个调用)。 无缓冲查询实际上将打开连接,并将对数据库服务器游标的引用移回,然后您需要从该游标中获取记录。 只要有剩余要提取的内容,游标仍处于打开状态,并且您将不会使用基础连接进行任何其他操作。 或者,您可以调用mysql_free_result()并“早”释放连接(无需先从游标中读取所有行)。

===============>>#2 票数:3

您实际上应该1)读取检索到的结果,或者2)释放它(mysql_free_result)...

您有两个不同的查询。 如果您不阅读结果或在两者之间关闭结果,则可能无法运行新结果。

(如果您实际上不需要实际的项目,那么我认为没有必要进行查询。如果您对实际的项目不感兴趣,那么就使用SELECT COUNT(*)即可。)

  ask by Philip Kirkbride translate from so

未解决问题?本站智能推荐: