使用php Mysql优化插入sql(从Json生成sql查询)
嗨,伙计们,你好吗 这是我的插入,从前端获取变量:使用php Mysql优化插入sql(从Json生成sql查询),php,mysql,insert,Php,Mysql,Insert,嗨,伙计们,你好吗 这是我的插入,从前端获取变量: function insert_evaluation() { /* Gettin tons of POST variables from ANGULARJS 1.5 FRONT END*/ $data = json_decode(file_get_contents("php://input")); /* INSERTING TONS OF VARIABLES INTO MYSQL, I WOULD LIKE THIS T
function insert_evaluation() {
/* Gettin tons of POST variables from ANGULARJS 1.5 FRONT END*/
$data = json_decode(file_get_contents("php://input"));
/* INSERTING TONS OF VARIABLES INTO MYSQL, I WOULD LIKE THIS TO BE AUTOMATED, WRITING .$data->idintervenant. FOR EXAMPLE IS REALLY ANNOYING GRRRRR. MY DREAM WOULD BE A LOOP THAT WOULD DO ALL OF THE JOB AUTOMATICALLY INSERTING THE VARIABLES AUTOMATICALLY IN THE RIGHT ORDER */
$q = "INSERT INTO evaluations VALUES ('','".$data->idintervenant."','".$data->idresto."','".$data->noteglobale."','".$data->service."','".$data->ambiance."','".$data->attente."','".$data->caisses."','".$data->cuisines."','".$data->toilettes."')";
$qry = mysql_query($q);
if ($qry) {
$arr = array('msg' => "SUCCESS RECORD!!!", 'error' => '');
$jsn = json_encode($arr);
// print_r($jsn);
} else {
$arr = array('msg' => "", 'error' => 'ERROR RECORDING');
$jsn = json_encode($arr);
// print_r($jsn);
}
exit();
}
您是否看到重写所有变量名称(如.$data->noteglobale)是多么无聊和浪费时间。比如说
问题是我不想重写所有来自前端的变量,我想自动化所有这些。。。我在考虑一个FOR循环。。。有人知道吗
它将使它成为动态的,例如,如果前端发送10个变量,如果最近ANGULARJS前端向PHP后端发送12个变量,它仍然可以工作,只需修改SQL表
我的主要问题是:如何不重写变量名并使其自动
我需要自动生成插入,我不想重写来自angularJs前端的所有变量,你明白我的意思吗
编辑1最后我得到了这个:
$data = json_decode(file_get_contents("php://input"), true);
$columns = implode(", ",array_keys($data));
$escaped_values = array_map('mysql_real_escape_string', array_values($data));
$values = implode(", ", $escaped_values);
var_dump($escaped_values);
$sql = "INSERT INTO evaluations VALUES ($values)";
它几乎起作用了!除了我不知道如何在我的$value中添加第一个空列。。。我想推送一个空值(->这是因为表中第一列的自动递增null)
编辑2:好的,非常感谢您的帮助,它终于起作用了。这是我的代码(很抱歉有法语的东西):
最后,echo$q为我提供了一个正确的动态生成的SQL查询:
INSERT INTO evaluations (idevaluation,noteglobale,service,ambiance,attente,caisses,cuisines,toilettes,idintervenant,idresto) VALUES (null,1,1,1,1,1,1,1,3,2)
我将在上面使用它:
Tx也用于安全建议!首先,在插入来自客户端的传入数据之前,您需要使用验证过程,请使用PDO对象以确保不会获得SQL注入 插入传入对象中所有值的简单方法是将其转换为数组,并使用内爆函数将其转换为字符串
请不要使用,它已被弃用(在PHP7中永远消失)特别是如果你只是在学习PHP,那么就把精力花在学习PDO
数据库扩展上吧。这真的很容易。你的脚本甚至有可能会使用它。谢谢,但是我的问题呢?我认为SQL注入是一个更大的问题。非常感谢你,但这不是我的问题。没有安全性我的脚本中有ty功能,因为这不是我的问题。哦,好的,非常感谢。但是我还没有使用Pdo…但是如果这是唯一的方法,好的。请注意,在MySQL中,当你没有指定要插入的字段时,值的顺序数学。我知道我很烦人,但是有没有办法在没有Pdo的情况下实现它?这似乎需要很长时间来学习…是的,w对于准备好的声明,请查看下面的两个链接:谢谢,似乎我也有一些东西:
INSERT INTO evaluations (idevaluation,noteglobale,service,ambiance,attente,caisses,cuisines,toilettes,idintervenant,idresto) VALUES (null,1,1,1,1,1,1,1,3,2)