我正在尝试编写一个php脚本,它将文本文件分解为内容并将其插入到MySql数据库中,代码如下:
$file = "my_file.txt";
$db = "db_name";
$link = mysql_connect("localhost","root");
if(!$link) die("Connection Failed");
mysql_select_db($db) or die("Could not open $db: ".mysql_error()."<br />");
$fp = fopen($file, 'r') or die("Could not open file");
$my_filesize = filesize($file);
while(!feof($fp)) {
$prod_doc.=fread($fp, $my_filesize); // store the file in a variable
}
$prod_array = explode("~",$prod_doc); // create a array with the explode function
for($i=0; $i<count($prod_array); $i++){
$prod_items[$i] = explode(',', $prod_array[$i]); // create a malti-dimensional array
}
$query = "INSERT INTO my_table(feild1, feild two, feild three)
VALUES ('$prod_items[$i][0]','$prod_items[$i][1]','$prod_items[$i][2]')
";
$result = mysql_query($query);
if(!$result) die(mysql_error());
$result = mysql_affected_rows($result);
echo $result;
mysql_close($link); `
我的问题是:Array [0],Array [1],Array [3]是输入数据库而不是我的数据。在此先感谢,欢呼。
答案 0 :(得分:2)
要访问双引号字符串中使用的数组变量元素值,需要使用大括号分隔符:
"'{$prod_items[$i][0]}','{$prod_items[$i][1]}','{$prod_items[$i][2]}') ";
另一种编码方式是连接(在这种情况下,您不需要额外的分隔符):
"'" . $prod_items[$i][0] . "','" . $prod_items[$i][1] . "','" . $prod_items[$i][2] . "') ";
不要忘记,如果输入数据不可预测,您需要过滤掉可能会破坏续集或危及安全原则的字符。见How can I prevent SQL injection in PHP?
另外,junmats的评论是正确的,你只是在for循环之外运行查询,这是没有意义的。
答案 1 :(得分:1)
你也必须遍历你的$ prod items数组,然后连接值
$insert = array();
for($i=0; $i<count($prod_array); $i++){
$prod_items[$i] = explode(',', $prod_array[$i]); // create a malti-dimensional array
$insert[] = '( ' .$prod_items[$i][0]. ', '.$prod_items[$i][1]. ', '. $prod_items[$i][3] .')';
}
$insert_string = implode(', ', $insert);
$query = "INSERT INTO my_table(feild1, feild two, feild three)
VALUES" . $insert_string;
你应该使用foreach insted for。
答案 2 :(得分:0)
好像你已经跳过了一些代码。 爆炸后你将拥有一系列字符串,而不是二维数组。 此外,最好更新一下代码。
$query = "INSERT INTO my_table(feild1, feild_two, feild_three) VALUES ('".$prod_items[$i][0]."','".$prod_items[$i][1]."','".$prod_items[$i][2]."') ";
答案 3 :(得分:0)
您应该使用标准串联(。)技术。 PHP只能评估字符串中的简单变量:
“$ var” - &gt; var被评估 “$ var-&gt; var” - &gt;没有评估 “$ var [0]” - &gt;没有评估
$query = "INSERT INTO my_table(feild1, feild two, feild three)
VALUES ('".$prod_items[$i][0]."','".$prod_items[$i][1]."','".$prod_items[$i][2]".')
";