PHP PDO bindValue()don';行不通

PHP PDO bindValue()don';行不通,php,pdo,bindvalue,Php,Pdo,Bindvalue,听起来$\u GET['index']并不是你所期望的那样。使用var_dump()检查值。请注意var_dump报告的字符串的长度,因为某些字符在视觉上无法检测,但字符串的长度会告诉您隐藏的故事。听起来$_GET['index']并不是您期望的那样。使用var_dump()检查值。请注意var_dump报告的字符串的长度,因为某些字符在视觉上无法检测,但字符串的长度将说明隐藏的情况。$\u GET超级全局数组中的值是字符串:PHP不会猜测查询字符串中传递的内容 如果您想将$\u GET中的一

听起来$\u GET['index']并不是你所期望的那样。使用var_dump()检查值。请注意var_dump报告的字符串的长度,因为某些字符在视觉上无法检测,但字符串的长度会告诉您隐藏的故事。

听起来$_GET['index']并不是您期望的那样。使用var_dump()检查值。请注意var_dump报告的字符串的长度,因为某些字符在视觉上无法检测,但字符串的长度将说明隐藏的情况。
$\u GET
超级全局数组中的值是字符串:PHP不会猜测查询字符串中传递的内容


如果您想将
$\u GET
中的一个值视为整数,这就是您想要的,您需要自己将其转换为整数

为此,您可以使用:

  • 答:
    (int)$\u GET['yourval']
  • 该函数允许用户指定要使用的基址

  • $\u GET
    超级全局数组中的值是字符串:PHP不会猜测查询字符串中传递了什么


    如果您想将
    $\u GET
    中的一个值视为整数,这就是您想要的,您需要自己将其转换为整数

    为此,您可以使用:

    • 答:
      (int)$\u GET['yourval']
    • 该函数允许用户指定要使用的基址

    如果您选中$stmt->errorInfo(),您将实际发现您的查询失败

    PARAM_INT告诉PDO您给它一个整数。如果不给PDO一个整数,PDO将引用sql字符串中的值

    <?php
    try
    {
        $db = new PDO("mysql:host=localhost;dbname=DBNAME", "USER", "PASSWD");
    
        $stmt = $db->prepare("SELECT id, name FROM testdb ORDER BY time DESC LIMIT :index, 10");
        $stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
        $stmt->execute();
    
        while( $r = $stmt->fetch(PDO::FETCH_ASSOC) )
        {
            echo var_dump($r);                                      
        }
    
    }
    catch( PDOException $e )
    {
        die("Exception");
    }
    
    SELECT id, name FROM testdb ORDER BY time DESC LIMIT "1", 10
    
    $\u GET中的所有值都是数组或字符串。您做了正确的事情,将$\u GET['index']强制为整数,然后将其绑定为值。通过这样做,PDO将获得一个整数,并期望从PDO::PARAM_INT中得到一个整数,因此不会在sql字符串中引用该值

    <?php
    try
    {
        $db = new PDO("mysql:host=localhost;dbname=DBNAME", "USER", "PASSWD");
    
        $stmt = $db->prepare("SELECT id, name FROM testdb ORDER BY time DESC LIMIT :index, 10");
        $stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
        $stmt->execute();
    
        while( $r = $stmt->fetch(PDO::FETCH_ASSOC) )
        {
            echo var_dump($r);                                      
        }
    
    }
    catch( PDOException $e )
    {
        die("Exception");
    }
    
    SELECT id, name FROM testdb ORDER BY time DESC LIMIT "1", 10
    

    如果您选中$stmt->errorInfo(),实际上会发现您的查询失败

    PARAM_INT告诉PDO您给它一个整数。如果不给PDO一个整数,PDO将引用sql字符串中的值

    <?php
    try
    {
        $db = new PDO("mysql:host=localhost;dbname=DBNAME", "USER", "PASSWD");
    
        $stmt = $db->prepare("SELECT id, name FROM testdb ORDER BY time DESC LIMIT :index, 10");
        $stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
        $stmt->execute();
    
        while( $r = $stmt->fetch(PDO::FETCH_ASSOC) )
        {
            echo var_dump($r);                                      
        }
    
    }
    catch( PDOException $e )
    {
        die("Exception");
    }
    
    SELECT id, name FROM testdb ORDER BY time DESC LIMIT "1", 10
    
    $\u GET中的所有值都是数组或字符串。您做了正确的事情,将$\u GET['index']强制为整数,然后将其绑定为值。通过这样做,PDO将获得一个整数,并期望从PDO::PARAM_INT中得到一个整数,因此不会在sql字符串中引用该值

    <?php
    try
    {
        $db = new PDO("mysql:host=localhost;dbname=DBNAME", "USER", "PASSWD");
    
        $stmt = $db->prepare("SELECT id, name FROM testdb ORDER BY time DESC LIMIT :index, 10");
        $stmt->bindValue(":index", $_GET['index'], PDO::PARAM_INT);
        $stmt->execute();
    
        while( $r = $stmt->fetch(PDO::FETCH_ASSOC) )
        {
            echo var_dump($r);                                      
        }
    
    }
    catch( PDOException $e )
    {
        die("Exception");
    }
    
    SELECT id, name FROM testdb ORDER BY time DESC LIMIT "1", 10
    

    page.php?index=10给出字符串(2)“10”。page.php?index=10给出字符串(2)“10”。$\u GET super全局数组中的值也可以是数组。$\u GET super全局数组中的值也可以是数组。