PHP PDO bindValue()don';行不通
听起来$\u GET['index']并不是你所期望的那样。使用var_dump()检查值。请注意var_dump报告的字符串的长度,因为某些字符在视觉上无法检测,但字符串的长度会告诉您隐藏的故事。听起来$_GET['index']并不是您期望的那样。使用var_dump()检查值。请注意var_dump报告的字符串的长度,因为某些字符在视觉上无法检测,但字符串的长度将说明隐藏的情况。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
超级全局数组中的值是字符串:PHP不会猜测查询字符串中传递的内容
如果您想将
$\u GET
中的一个值视为整数,这就是您想要的,您需要自己将其转换为整数
为此,您可以使用:
- 答:
(int)$\u GET['yourval']
- 该函数允许用户指定要使用的基址
$\u GET
超级全局数组中的值是字符串:PHP不会猜测查询字符串中传递了什么
如果您想将
$\u GET
中的一个值视为整数,这就是您想要的,您需要自己将其转换为整数
为此,您可以使用:
- 答:
(int)$\u GET['yourval']
- 该函数允许用户指定要使用的基址
<?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全局数组中的值也可以是数组。