这里是我的代码-
$things = serialize($_POST['things']);
echo $things;
require 'database.php';
$q = "INSERT INTO tblslider(src) values($things)";
mysql_query($q, $link);
if($result)
{
echo "Slider saved successfully.";
}
输出-
a:4:{i:0;s:10:"651603.jpg";i:1;s:11:"7184512.jpg";i:2;s:11:"3659637.jpg"; i:3;s:10:"569839.jpg";}v
这意味着我正在正确获取记录,但为什么它没有保存在数据库中??
最佳答案
你忘记了 $things
的引号:
$q = "INSERT INTO tblslider(src) values('" . mysql_real_escape_string($things) . "')";
mysql_real_escape_string()
这确实是您永远应该做的最少!
也作为@sanders mentions ,您应该始终输出完整的查询(通过 print_r()
或 var_dump()
)作为调试的第一步。
我更喜欢构建这样的查询以增强可读性:
$q = sprintf(
'INSERT INTO tblslider(src) VALUES ("%s")',
mysql_real_escape_string($things)
);
也就是说,每当我绝对必须自己 build 和逃离它们时。你真的应该看看PDO .
编辑
此线程中的评论表明 OP 实际上想要将 651603.jpg,7184512.jpg,3659637.jpg,569839.jpg
插入数据库。在那种情况下 implode()
可能是 used (前提是 $_POST['things']
仅 包含要插入的项目!):
$q = sprintf(
'INSERT INTO tblslider(src) VALUES ("%s")',
mysql_real_escape_string(implode(',', $_POST['things']))
);
请注意,我在这里直接使用了 $_POST['things']
。没有 serialize()
。 (然而,直到现在我才意识到这个错误。)
关于php - 如何将序列化数据插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4183228/