2011-04-09 54 views
0

嗨,我使用的是智者和PHP我试图使这一功能工作与PHP数组问题和SQL querys

   {foreach $rows as $row} 
      <input type="checkbox" name="likes[]" value="{$row.ID}">{$row.Interests}<br> 
      {/foreach} 

这里面是复选框的HTML /模板,它从一个数据抓取表在我的数据库

现在我想将数据存储到我的数据库

 // $likes = mysql_escape_string($likes); 

     $connection = mysql_open(); 
     $insert = "insert into Users " . 
      "values (null, '$firstName', '$lastName', '$UserName', '$email', from_unixtime('$DOB'), '$join', '$gender')"; 


     $result = @ mysql_query ($insert, $connection) 
      or showerror(); 
     $id = mysql_insert_id(); 
     //echo $id; testing what it gets. 
      mysql_close($connection); 

     $connection = mysql_open(); 
     foreach($likes as $like) 
     { 

     $insert3 = "insert into ProfileInterests " . 
     "values ('$id', '$like', null)"; 
     $result3 = @ mysql_query ($insert3, $connection) 
     or showerror(); 

     } 
     mysql_close($connection) 
     or showerror(); 
    } 

这里面是我使用将数据输入到我的数据库脚本...还有更多上面这是刚刚清洗用户i真的输入。 mysql_open()是我自己的函数,所以不要太担心。

$likes = @$_POST['likes']; 

这就是我用来得到喜欢....我觉得这是错误的。我不知道该怎么办....

我现在得到这个错误。为foreach提供的无效参数() 我认为这完全与变量$ likes有关,我认为它没有像数组那样对待......对我应该做什么有任何想法..我是一个新手。

回答

1

下面的行:

$likes = join(",",$likes); 

正在改变您的$likes阵列$likes,包含值和由逗号分隔。因此,当你试图循环使用$likes时,它不再是一个数组:它是一个字符串 - 它解释了为foreach()提供的无效参数。注释后


编辑:调用下面一行时:

$likes = mysql_escape_string($likes); 

如果您$likes是一个数组,你会得到一些麻烦,为mysql_escape_string作品在一根绳子上。

,而不是试图在一次逃跑的整个数组,你应该在每个项目上使用mysql_escape_string的,而循环阵列上 - 有点像:

foreach($likes as $like) 
{ 
    // escape the current item : 
    $escaped_like = mysql_real_escape_string($like); 

    $insert3 = "insert into ProfileInterests values ('$id', '$escaped_like', null)"; 
    $result3 = @ mysql_query ($insert3, $connection) or showerror(); 
} 


一点题外话:你应该在开发过程中使用var_dump()来查看它们包含的内容;-)它将帮助您了解代码的功能。

+0

我只是删除,我明白了为什么:P 但现在我得到这些错误 函数mysql_escape_string()预计参数1是字符串数组给定 警告:的foreach() 仍阵列有问题提供了无效的参数我认为 – 2011-04-09 08:35:39

+0

简单...它总是杀死我们:D – Khez 2011-04-09 08:35:49

+0

这是它一旦你编辑!!!!! OMG谢谢你,身份证给你或亲爱的你,谢谢! – 2011-04-09 08:43:05