php - php 和 SQL 查询的数组问题

标签 php mysql smarty

嘿伙计们,我正在使用 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/

相关文章:

php - 使用 PHP 生成随机 IP 地址

javascript - 根据网络表单单选按钮选择显示结果 div

mysql - 删除在单独表中找不到 userID 的行

mysql - 将不同数据库中的 2 个相似模型关联到同一模型

c# - '无法将 MySQL 日期/时间值转换为 System.DateTime' 当不使用日期时 - C#.Net

php - 将 PHP 数组更改为 Smarty 数组并读取模板中的结果

JavaScript 正则表达式未验证

php - 让 cron 在 php :7-fpm image 上运行

php - 如何使用 PHPExcel_Reader_HTML 设置 Excel 单元格格式

PHP MySQL 插入 "{$clientname}"作为字符串而不是 PHP 变量