插入MySQL不与var一起使用并插入空行

时间:2014-09-04 21:04:47

标签: php mysql insert insert-into

我试了很久才明白这段代码出了什么问题:

我想在数据库中放入两个数组但是数组可以随时更改。所以它需要动态工作。

我得到的只是一个没有任何数据的空行 - 但是作为字符串它可以正常工作。

如果我编写查询的输出字符串而不是它可以工作,但这不是:

$fields = $values = array();
                $j = 0;

                while ($j < mysql_num_fields($query)) {
                    $namee = mysql_fetch_field($query, $j)->name;
                    if(isset($AutoFill[$namee])){
                        if($AutoFill[$namee] == '?')
                            $values[]  = "'".mysql_real_escape_string("dopd")."'";//$_POST[$namee]
                        else
                            $values[] = "'".mysql_real_escape_string($AutoFill[$namee])."'";
                        $fields[] = "$namee";
                    }
                    $j++;
                }
                $fields = implode(",", $fields);
                $values = implode(",", $values);
// not working
                mysql_query("INSERT INTO ".$table_name." (".$fields.") VALUES (".$values.")");
// "INSERT INTO ".$table_name." (".$fields.") VALUES (".$values.")" => tostring working:
        mysql_query("INSERT INTO _users (user_name,display_name,password,email,activation_token,last_activation_request,lost_password_request,active,title,sign_up_stamp,last_sign_in_stamp) VALUES ('dopd','dopd','dopd','dopd','dopd','1409863484','0','dopd','New Member','1409863484','0')");

2 个答案:

答案 0 :(得分:1)

这不起作用,因为您无法将数组传递给查询。

mysql_query("INSERT INTO ".$table_name." (".$fields.") VALUES (".$values.")");

请改为尝试:

mysql_query( "INSERT INTO ".$table_name." ('" . implode("','", $fields) . "') VALUES ('" . implode("','", $values) . "');" );

这将从数组中创建一个正确传递给SQL语句的字符串。在查询语句中而不是在上面进行内爆。此外,您没有单独将值包装在引号中,因此您获得了一长串值(即:'1,2,3')而不是单独引用的值(即:'1','2','3 “)。

答案 1 :(得分:0)

对此的解决方案是$ query在正确的位置og范围内没有正确判断。 代码在用户的任何国王和信息长度上都很有用。

谢谢大家 - 周末最好。