我试了很久才明白这段代码出了什么问题:
我想在数据库中放入两个数组但是数组可以随时更改。所以它需要动态工作。
我得到的只是一个没有任何数据的空行 - 但是作为字符串它可以正常工作。
如果我编写查询的输出字符串而不是它可以工作,但这不是:
$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')");
答案 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范围内没有正确判断。 代码在用户的任何国王和信息长度上都很有用。
谢谢大家 - 周末最好。