代码之家  ›  专栏  ›  技术社区  ›  Jaakko Seppälä

一个有效的SQL命令不会在PHP中运行

  •  0
  • Jaakko Seppälä  · 技术社区  · 15 年前

    我在PHPAdmin的终端中运行了以下代码:

    SELECT COUNT( * )
    FROM User
    WHERE email = 'ijp' 
    

    结果是0。

    然后,我的PHP程序的一部分如下所示:

    $email = clean_input($_POST['email']);
    $query = "SELECT COUNT(*) FROM user WHERE '.$email.'=email"; 
    echo $query;
    $result = mysqli_query($link, $query);
    echo $result;
    mysqli_close($link);
    

    我已经检查过我登录数据库是否正常。但输出仍然是

    SELECT COUNT(*) FROM User WHERE email='ijp'
    Catchable fatal error: Object of class mysqli_result could not be converted to string   in .../html/register.php on line 49
    

    如何在PHP中运行MySQL命令?

    4 回复  |  直到 15 年前
        1
  •  0
  •   Mario    15 年前

    如果值或 $email 'ijp' ,的值 $query 之后

    $query = "SELECT COUNT(*) FROM user WHERE '.$email.'=email"; 
    

    会是。。。

    SELECT COUNT(*) FROM user WHERE ijp=email
    

    使用 '$email' 而不是 '.$email.'

        2
  •  5
  •   Xint0    15 年前

    你通过了 $result 资源到 echo 它需要一个字符串。你需要用一个 mysqli_fetch_* 函数从 $结果 然后打印出来。

    mysqli_fetch() 已弃用,请使用 mysqli_fetch_array mysql_fetch_assoc mysql_fetch_all ,例如:

    
    $row = mysqli_fetch_array($result);
    if($row) {
        echo $row[0];
    }
    
        3
  •  1
  •   Andrew Sledge    15 年前

    尝试使用

    $query = "SELECT COUNT(*) FROM user WHERE email=\"".$email."\"";
    
        4
  •  0
  •   Zathrus Writer    15 年前

    以上所有的答案都是正确的,但有一点是错误的。。。您需要区分一个名为“User”的表和一个名为“User”的表——它们在*NIX系统(Linux等)上是区分大小写的