嘿伙计们,我正在使用smarty和php我试图让这个功能正常工作
{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();
}
我正在使用的脚本将数据输入我的数据库......上面还有更多内容只是清理用户输入。 mysql_open()是我自己的函数,所以不必过于担心。
$likes = @$_POST['likes'];
这就是我用来获得喜欢的东西....我觉得这是错的。我不知道该怎么做....
此刻我收到此错误。为foreach()提供的参数无效 我认为这完全与变量$ likes有关,我认为它并没有被视为一个阵列...我应该做什么的任何想法..我是一个相当新手。
答案 0 :(得分: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()
来查看它们包含的内容;-)它会帮助你理解你的代码在做什么。