嘿伙计们,我正在使用 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 有关,我认为它没有被视为数组......任何关于我应该做什么的想法......我是一个新手。
最佳答案
以下行:
$likes = join(",",$likes);
正在将您的 $likes
array 转换为 $likes
string,其中包含值并通过逗号。
所以,稍后,当您尝试循环 $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()
在开发时查看变量,看看它们包含什么;-)它将帮助您了解代码在做什么。
关于php - php 和 SQL 查询的数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603654/