【发布时间】:2014-11-04 10:47:18
【问题描述】:
这是我的问题,
我有一个 php FOR 语句,无论我做什么,它只会通过它一次...我将我的 vars 检查到其中,并写入它们以确保...一切看起来都很好...但它永远不会工作...
这里是代码($user 是用我的会话变量初始化的):
for($i=0;$i<=($size);$i++){
$test = $db->prepare("INSERT INTO `test`(`val`) VALUES ('IN!!')");
$test->execute();
$name = '';
if($i==0){
$name = $db->quote("test");
}else{
$name = $db->quote("number $i");
}
$number = $db->quote($i);
//insert
$query = "INSERT INTO `test`(`name`,`number`) VALUES ($name,$number)";
$insert = $db->prepare($query);
if($insert->execute()){
$id = '';
$get = $db->prepare("SELECT last_insert_id();");
$get->execute();
foreach($get as $myId){
$id = $myId[0];
}
if(!(isRel($db,$user))){
if(!(setIsRel($db,$user,1))){
$error = false;
}
}
if(!(hasRel($db,$etabId))){
if(!(setHasRel($db,$id,1))){
$error = false;
}
}
if(!(buildRelationShip($db,$id,'2'))){
$error = false;
}
if(!(buildRelationShip($db,$id,'3'))){
$error = false;
}
}else{
$error = false;
}
$check1 = '';
$check2 = '';
$check3 = '';
$check4 = '';
if(is_numeric($size)){
$check1 = "OK";
}
if($i<=$size){
$check2 = "OK";
}
$test = $db->prepare("INSERT INTO `test`(`val`) VALUES ('SIZE IS NUMERIC? $check1 -- I SMALLER? $check2')");
$test->execute();
}
答案是:
IN!! SIZE IS NUMERIC? OK -- I SMALLER? OK
我哪里错了...?
感谢帮助!
(这个 PHP 代码是从一个 .ajax 请求 -jquery- 中调用的,但我认为它与此无关,因为我已经用这个做了一些类似的事情......)
SIZE 变量始终设置为 2 或 3,绝不会更小!已经检查了
编辑:
嗯,
这是 FOR 语句之前的代码:
function createStages($db,$user,$size){
$error = true;
$size= intval($size);
我不认为它会有所帮助..
【问题讨论】:
-
您的
$size值是多少?我认为$size是0。 -
旁注:
VALUES ($name,$number)-$name很可能不是int,所以引用它。 -
@Fred-ii- 也许这就是
$db->quote()所做的。 -
如果
$size的原始值是"'3'",加上额外的引号,intval($size)将是0。 -
intval()返回字符串开头的整数。由于该字符串以引号而不是整数开头,因此它返回零。
标签: php jquery ajax for-loop while-loop