php - 将表单输入存储到数组并查询数组时出现问题

标签 php mysql

基本上我有一个动态表单,它根据用户的选择方式提供可变数量的输入,我已经使用此 name="user[]" 设置所有文本输入以存储值成一个数组。

然后我在提交表单后放入这个数组:

$array = check_input($_POST['user']);

然后我在这样的查询中使用这个数组:

$query = 'SELECT * FROM users_tb WHERE student_number IN(' . implode(',', $array) .')';
mysql_query($query) or die(mysql_error());
$result=mysql_query($query);

我得到这个错误:

您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 ')' 附近使用的正确语法

现在我还想检查数组中的值,但是当我尝试 print_r($array); 查看值是否存在时,它只会打印单词“Array”

我做错了什么?

谢谢

其他问题----

我有一个由用户以不同的动态形式输入的数组字符串。我想将数组中的每个值连同一个 itemid(所有值都相同)一起存储到一个表中

我的查询目前正在将整个数组插入到一行 text_value 中,并带有内爆。有没有一种方法可以代替遍历数组并对数组中的每个值运行查询,让我这样做?

当前查询:

$query = "INSERT INTO answers_tb (item_id, text_value)VALUES('$itemid','".implode(',', $answers) . "')";

这里是数组的print_r:

数组([0] => 选项 1 [1] => 选项 2 [2] => 选项 3 [3] => 选项 4 )

谢谢

最佳答案

您在 check_input() 中执行的所有操作都是为字符串设计的。考虑试试这个。

function check_input_array($data)
{
   foreach ($data as &$d) {
     $d = trim($d);
     $d = stripslashes($d);
     $d = htmlspecialchars($d);
     $d = mysql_real_escape_string($d);
   }
   return $data;
}

现在您将有两个函数:适用于字符串的 check_input() 和适用于一维数组的 check_input_array()。

此外,请引用 fredrik 的回答,因为他发现您的代码忘记引用您放入 SQL 字符串中的值。


我的猜测是,对于您的示例数组,需要将以下内容插入到表中。

item_id|text_value
-------+----------
      0|option 1
      1|option 2
      2|option 3
      3|option 4

那看起来像这样。

$records = array();
foreach($array as $item_id => $text_value) {
    $records[] = '("' . $item_id . '","' . $text_value . '")';

}
$sql = 'INSERT INTO answers_tb (item_id, text_value) VALUES';
$sql .= implode(',', $records);

关于php - 将表单输入存储到数组并查询数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474819/

相关文章:

php - Apache URL 重写 & 所有请求均由同一 PHP 文件运行

php - 是否可以在 Lumen(by Laravel) 中使用西里尔符号?

php - 在 PHP 中创建两个相同的静态类

php - 多个 ORDER 语句 MySQL

从表单创建 PHP 动态查询

php - 在mysql中使用UTF-8的终极方法

php - 当买家在 OpenCart 下订单时,更新产品 'quantity' 的代码是什么?

php - 查询 MAX 函数不起作用

javascript - 参数编码(引号和空格字符)

php - 如何在 OctoberCMS 插件中注册中间件?