我遇到了一个挑战,我将查询保存到数据库中。 在我的项目中,我想在数据库中保存mysql更新查询,当另一个操作在另一个页面上运行时,我得到该查询并通过我的函数传递它并运行。在得到它之后它是空的。以下是我到目前为止所做的工作。
//将查询保存在数据库中
$query = array();
$query['approved'] = "UPDATE payment SET pm_status = 'Approved' WHERE id = '69'";
$query['approved2'] = "UPDATE member SET pay_date = NOW())";
// i den serialize和addslashes,以便将其保存在数据库中
$tosave = addslashes(serialize($query));
$sql = "INSERT INTO trans (saved_query) VALUES ($tosave)";
//我将$ tosave保存到数据库中,我检查了它并保存了它。 在我想要使用它的页面上,每次我得到值并反序列化时,它返回为空,例如在选择行的值后
$toprocess = unserialize($query['saved_query']);
echo $toprocess['approved'];
它返回一个空值,当我在查询中运行它时,它不会运行。
但是如果我直接回显而没有反序列化,它会忽略其中的值
echo $query['saved_query'];
请帮助我在这里遗漏一些东西。感谢
我没有阻止sql注入。我已经不是那样了。我只想运行保存在数据库中的sql。这与预防mysql注入的答案不同。感谢
答案 0 :(得分:0)
您的查询中存在错误
$query['approved2'] = "UPDATE member SET pay_date = NOW())";
有一个额外的括号 now()功能。