Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用?带有SQL语句的占位符,其中包含“LIMIT?”?_Php_Mysql - Fatal编程技术网

Php 如何使用?带有SQL语句的占位符,其中包含“LIMIT?”?

Php 如何使用?带有SQL语句的占位符,其中包含“LIMIT?”?,php,mysql,Php,Mysql,我检查了这个: 但它并没有提到这个问题?占位符 我有这样一句话: $stmt=$connect->prepare("SELECT * FROM users LIMIT ?"); $stmt->execute(array($max_num)); 但它不起作用,因为限制数首先不应该用括号括起来 我怎样才能解决这个问题?提前谢谢 试试看 $stmt->execute(array((int)$max_num)); 或者如果这不起作用,试试看 $stmt->bindParam

我检查了这个:

但它并没有提到这个问题?占位符

我有这样一句话:

$stmt=$connect->prepare("SELECT * FROM users LIMIT ?");
$stmt->execute(array($max_num));
但它不起作用,因为限制数首先不应该用括号括起来

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

试试看

$stmt->execute(array((int)$max_num));
或者如果这不起作用,试试看

$stmt->bindParam(1, (int)$max, PDO::PARAM_INT);
$stmt->execute();

PDO似乎不理解极限,因为它是一个数值。你可能不得不和我一起生活

$connect->query("SELECT * FROM users LIMIT $max_num"); 
上面的查询不起作用,因为参数需要一个整数,当您以上面的方式绑定它时,该值被绑定到一个字符串

因此,解释查询采用以下形式:

   select * from users limit '1'
应按以下方式修改查询:

     $stmt->bindValue(1,1,PDO::PARAM_INT);
     $stmt->execute();

这是最大行数,$max\u num=$\u GET['max\u num']。它由用户定义。谢谢,您收到了什么错误消息?是的,$max_num显然是一个整数。我没有收到任何错误消息。但是当我把$max_num放回SQL语句中时,我得到了期望的结果。如果使用$stmt->bindParam1,$max_num;而不是执行?嗨,谢谢你的回复,但我无法让它工作。它给了我一个PHP致命错误:在哪个示例中无法通过引用传递参数2?顺便说一句,我刚刚注意到1上的括号不匹配,所以我将修复它嗨,克里斯,谢谢你的回答。这对我有用。我甚至不需要使用int。在这种情况下setAttribute语句的用途是什么?谢谢。我想你已经注销了。无论如何,请让我知道这一点,因为我很好奇为什么错误处理属性解决了这个问题。Thanks@alexx0186我认为这个链接可能是相关的。嗨,谢谢你的回复。第一个1是参数的索引位置吗?如果我从用户中选择了user=?限度我有$stmt->executearray$user。它应该是$stmt->bindValue2,$max_num,PDO::PARAM_INT;?非常感谢是的,你说得对。1是索引位置$stmt->bindValue2,1,PDO::PARAM_INT$stmt->bindValue1,'username';然后$stmt->execute;哦,好的,谢谢你的提示。当做
   select * from users limit '1'
     $stmt->bindValue(1,1,PDO::PARAM_INT);
     $stmt->execute();