php - 如何将序列化数据插入数据库?

标签 php mysql serialization

这里是我的代码-

$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/

相关文章:

php - 根据用户组重定向到登陆页面或主页索引

php - 使用 PHP 发送带有 PDF 文件附件的电子邮件

php - 如何在 PHP 中实现 RSA SecurID

MySQL 在 MySQL 5.6 上导入 4GB+ SQL

php - 使用 Ajax 隐藏/显示数据库中的表列

json - 将可变长度的 JSON 数组解码为 Rust 数组

android - 如何序列化矩阵

PHP 数据库查询没有及时完成?

MySQL创建具有多个外键的表

java - 应该将 Log4J 记录器声明为 transient 吗?