基本上我有一个动态表单,它根据用户的选择方式提供可变数量的输入,我已经使用此 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/