PHP MySQL подключиться и создать таблицу без ошибок, но без данных - PullRequest
0 голосов
/ 05 января 2012

Мне удалось подключиться к базе данных mysql и создать таблицу, но нет данных, и я хотел бы знать, что я пропускаю или делаю неправильно?У меня есть пост мой код функции ниже.Мой эхо-счет подтвержден, и я также проверил свой Poems.csv, чтобы убедиться, что они не пустые.

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";
 }

1 Ответ

1 голос
/ 05 января 2012

В вашем запросе на вставку отсутствует 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] .'")';
...