php mysql连接并创建表没有错误,但没有数据
问题描述:
我能够连接到MySQL数据库并创建一个表,但没有数据,并想知道我失踪或做错了什么?我在下面发布我的功能代码。我的回声计数被确认,我也检查了我的Poems.csv以确保它们不是空白的。php mysql连接并创建表没有错误,但没有数据
function writeQuotestoDb() {
$input_csv = fopen("Poems.csv", "r");
$author_names = array();
$poem_names = array();
$poem_urls = array();
while (($columns = fgetcsv($input_csv, 1000, ",")) !== FALSE) {
array_push($author_names, $columns[0]);
array_push($poem_names, $columns[1]);
array_push($poem_urls, $columns[2]);
}
fclose($input_csv);
$dbh = mysql_connect('localhost', 'root', '');
mysql_select_db('test', $dbh);
mysql_query("CREATE TABLE IF NOT EXISTS `poem2` (
`id` INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`author_name` varchar(128) DEFAULT NULL,
`poem_name` varchar(128) DEFAULT NULL,
`poem_text` text,
`poem_url` varchar(1024) DEFAULT NULL
) ENGINE = MYISAM");
mysql_query("TRUNCATE `poem2`");
for ($i=0; $i<count($author_names); $i++) {
$poems[$i] = substr($poems[$i],7,(strlen($poems[$i])-14));
$poems[$i] = str_replace('"','',$poems[$i]);
$query = 'INSERT INTO `poem2` VALUES (NULL,"' . $author_names[$i] . '", "' . $poem_names[$i].'","' . $poem_urls[$i] .'")';
mysql_query($query);
}
echo count($author_names)." rows....successfully db updated";
}
答
您从插入查询中缺少poem_text。您可以使用下面的更新的代码:
function writeQuotestoDb() {
$input_csv = fopen("Poems.csv", "r");
$author_names = array();
$poem_names = array();
$poem_urls = array();
while (($columns = fgetcsv($input_csv, 1000, ",")) !== FALSE) {
array_push($author_names, $columns[0]);
array_push($poem_names, $columns[1]);
array_push($poem_urls, $columns[2]);
array_push($poem_text, $columns[3]); // If columns[3] does not exists you can just use array_push($poem_text, '');
}
fclose($input_csv);
$dbh = mysql_connect('localhost', 'root', '');
mysql_select_db('test', $dbh);
mysql_query("CREATE TABLE IF NOT EXISTS `poem2` (
`id` INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`author_name` varchar(128) DEFAULT NULL,
`poem_name` varchar(128) DEFAULT NULL,
`poem_text` text,
`poem_url` varchar(1024) DEFAULT NULL
) ENGINE = MYISAM");
mysql_query("TRUNCATE `poem2`");
for ($i=0; $i<count($author_names); $i++) {
$poems[$i] = substr($poems[$i],7,(strlen($poems[$i])-14));
$poems[$i] = str_replace('"','',$poems[$i]);
$query = 'INSERT INTO `poem2`(`author_name`, `poem_name`, `poem_text`, `poem_url`) VALUES ("' . $author_names[$i] . '", "' . $poem_names[$i] . '", "' . $poem_text[$i] . '","' . $poem_urls[$i] .'")';
mysql_query($query);
}
echo count($author_names)." rows....successfully db updated";
}
如果你不想插入poem_text
就用下面的插入语句,而不是原来的插入查询。
$query = 'INSERT INTO `poem2`(`author_name`, `poem_name`, `poem_url`) VALUES ("' . $author_names[$i] . '", "' . $poem_names[$i] . '","' . $poem_urls[$i] .'")';
+0
中刮取的数据完美!谢谢! – merrill 2012-01-05 10:26:39
在最后一个mysql_query($ query)之后;添加var_dump(mysql_error());并看看有什么错误。 – 2012-01-05 04:05:03
这是结果 字符串(47)“列计数与第1行的值计数不匹配”字符串(47)“列计数与第1行的值计数不匹配” 15038 rows .... successfully db updated – merrill 2012-01-05 04:09:59
错误本身说明查询有什么问题。您缺少插入查询中的'poem_text'。 – Virendra 2012-01-05 04:37:56