Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php Mysql优化插入sql(从Json生成sql查询)_Php_Mysql_Insert - Fatal编程技术网

使用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)