【发布时间】:2013-09-19 15:08:47
【问题描述】:
我有问题。我应该在 php 的 foreach 循环中更改变量的值,但该值始终保持预定义的值。代码如下:
$returnValue = "";
foreach($vinArray as $vinValue){
$sql_vin_check = "SELECT * FROM users WHERE vin LIKE '%:vin%'";
$stmtvincheck = $pdo->prepare($sql_vin_check);
$stmtvincheck->bindParam(':vin', $vinValue);
$stmtvincheck->execute();
$vinCheck = $stmtvincheck->rowCount();
$stmtvincheck->closeCursor();
echo $vinValue;
if($vinCheck != 0){
$returnValue = $vinValue; break;
}
}
return $returnValue;
而$returnValue 持有"" 值。我尝试回显$vinValue 变量,循环中断时它不为空。
我做错了什么?
【问题讨论】:
-
是
$vinCheck != 0,因为你只设置$returnValue如果它不等于0。尝试将你的回显更改为echo "vinValue: $vinValue vinCheck: $vinCheck"; -
您应该将准备好的语句(和参数绑定)从循环中取出。这就是准备好的语句的用途。
-
这是针对什么数据库的?因为手册指出“某些数据库可能会返回该语句返回的行数。但是,并非所有数据库都可以保证这种行为,并且不应依赖于可移植应用程序。”
-
并且始终进行
> 0检查而不是!= 0。有时结果是-1错误! -
我认为您需要将通配符添加到您要绑定的变量中,而不是在准备好的语句中的占位符周围。所以 LIKE :vin 和 bindParam(':vin', '%'.$vinValue.'%')。
标签: php variables loops foreach