2012-09-08 134 views
0

我试图推倒一些变量并将它们插入MySql数据库,但由于某种原因,它不工作。我一直在努力几个小时,而我只是不确定自己做错了什么。 如果你能帮助它,将不胜感激。implode()MySql查询不能正常工作

$AddressString = "address1,address2,address3,address5,postcode"; 

$AddressSplit = explode(",", $AddressString); //split the address string 
$StringLength = count($AddressSplit) - 1; 
$s = 0;  //trim any white spaces from the address string 
while ($s < count($AddressSplit)) { 
    $AddressSplit[$s] = trim($AddressSplit[$s]); 
    $s++; 
} 

//Create the Values to insert into DB 
$MysqlValues = implode("','", $AddressSplit); 
$MysqlValues = "'$MysqlValues'"; 
$NumberVals = count($AddressSplit); 

$t = 1; 
while ($t < $NumberVals) { 
    $ad[$i] = "add$i"; 
    $t++; 
} 
$TableNames = implode(", ", $ad); 

mysql_query("INSERT INTO pstc_add_main (" . $TableNames . ",add10,date) 
           VALUES (" . $MysqlValues . ",'$cdate')"); 
} 
+1

代码'echo'完整的查询刚在调用'mysql_query'之前。 – Jocelyn

+0

$ MysqlValues = implode(“','”,$ AddressSplit);应该是,$ MysqlValues = implode(“,”,$ AddressSplit); – FirmView

+0

您的输入字符串是否正确转义/过滤?否则,你只是在寻找问题。 – knittl

回答

0

由于您开始使字段名称1为基础,您的字段很短! 最后,您必须以相同数量的字段和值结束。

试试这个:

$t = 0; 
while ($t < $NumberVals) { 
    $ad[$i] = "add$i"; 
    $t++; 
} 

或者,如果你不想在第一场是“添加”,改变这样的:

$t = 1; 
while ($t <= $NumberVals) { 
    $ad[$i] = "add$i"; 
    $t++; 
} 

当然,这将是一个简单的测试做:

$sql = "INSERT INTO pstc_add_main (" . $TableNames . ",add10,date) 
          VALUES (" . $MysqlValues . ",'$cdate')"; 
var_dump($sql); 
mysql_query($sql); 
0

没有测试,

我怀疑你而改变,

$MysqlValues = implode("','", $AddressSplit); 

$MysqlValues = implode(",", $AddressSplit); 
0

只需使用

$MysqlValues = implode(",", $AddressSplit); 

,并尝试编辑像

mysql_query("INSERT INTO pstc_add_main (".$TableNames." ,add10,date) 
          VALUES (" . $MysqlValues . ",$cdate)");