【问题标题】:I'm trying to get some data into my database. It creates the new tables but doesn't fill them我正在尝试将一些数据放入我的数据库中。它创建新表但不填充它们
【发布时间】:2013-06-11 23:26:47
【问题描述】:

我在 localhost 上使用 MySQL 数据库,我正在尝试上传一些世界数据。当我运行下面的代码时,它会创建表单,但它们不会被填写。

我测试了文件读取。它能够很好地呼应名称、地区、纬度和经度。

<?php

require_once 'connect.ini.php';

$file_names = scandir('Countries');

foreach ($file_names as &$file_name)
    if ($file_name != '.' && $file_name != '..') {

        $file_path = '/Applications/XAMPP/xamppfiles/htdocs/series/dbsetup/Countries/'.$file_name;
        $file_handle = fopen("$file_path", "r");

        $sql = $sql = "CREATE TABLE `countries1`.`$file_name` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(20) NOT NULL, `region` VARCHAR(20) NOT NULL, `latitude` FLOAT(15) NOT NULL, `longitude` FLOAT(15) NOT NULL) ENGINE = MyISAM;";
        mysql_query($sql);

        while(!feof($file_handle)) {
            $explode = explode(", ", fgets($file_handle));
            $name = $explode[0];
            $region = $explode[1];
            $latitude = $explode[2];
            $longitude = $explode[3];
            $sql = "INSERT INTO `countries1`.`$file_name` (`id`, `name`, `region`, `latitude`, `longitude`) VALUES (NULL, \'$name\', \'$region\', \'$latitude\', \'$longitude\');";
            mysql_query($sql);
        }
    }
?>

下面是我的 connect.ini.php 文件,虽然我很确定它正在工作,因为它正在创建表单。

<?php
$conn_error='Could not connect.';

$mysql_host='localhost';
$mysql_user='root';
$mysql_pass='';

$mysql_db='a_database';


if(!(@mysql_connect($mysql_host,$mysql_user,$mysql_pass)&&@mysql_select_db($mysql_db)))
    die($conn_error);
?>

【问题讨论】:

  • 您从脚本动态创建表?!?不要那样做!
  • 旁注:请使用mysqliPDO 而不是mysql
  • @luk2302 我认为他试图自动化该过程,因为他想使用foreach 循环创建许多表。
  • 是的,很多表都是完全相同的,只是名称不同,这很有用...
  • 好吧,这有可能……你为什么要在这里转义一些字符" ... VALUES (NULL, \'$name\', \'$region\', \'$latitude\', \'$longitude\');"

标签: php mysql


【解决方案1】:

好吧,当变量在双引号内时,您不应该转义单引号。所以将插入查询更改为:

$sql = "INSERT INTO `countries1`.`abc` (`id`, `name`, `region`, `latitude`, `longitude`) VALUES (NULL, '$name', '$region', '$latitude', '$longitude');";

如果您使用 mysql 函数来执行查询,则双引号内也不需要尾随分号 ;

【讨论】:

  • 哈哈 我已经使用 PHP 和 MySQL 几年了,我什至不知道你可以用这种方式将变量插入字符串!我一直在做令人难以置信的乏味"My ".$var." Statement"
  • @AdiBradfield 哈哈!我是从像你这样的专家那里学到的。 :)
  • 没想到,我想我太依赖我的 IDE 高亮了。像魅力一样工作。谢谢。
  • @KevinPaladin 这让我想知道我错过了哪些 PHP 小技巧!不敢相信我刚开始学习时从未在任何教程中看到过这种情况!
  • @AdiBradfield 完全正确!我相信你会在 SO 中阅读其他人的代码时学到更多类似的东西。
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2015-05-26
  • 2018-02-15
相关资源
最近更新 更多