Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php I';我想把一些数据输入我的数据库。它会创建新表,但不会';我不能填满它们_Php_Mysql - Fatal编程技术网

Php I';我想把一些数据输入我的数据库。它会创建新表,但不会';我不能填满它们

Php I';我想把一些数据输入我的数据库。它会创建新表,但不会';我不能填满它们,php,mysql,Php,Mysql,我正在本地主机上使用一个MySQL数据库,并试图上传一些世界数据。当我运行下面的代码时,它会创建表单,但是表单不会被填充 我测试了文件的读取。它能够很好地呼应出名称、地区、lat和lng <?php require_once 'connect.ini.php'; $file_names = scandir('Countries'); foreach ($file_names as &$file_name) if ($file_name != '.' &&

我正在本地主机上使用一个MySQL数据库,并试图上传一些世界数据。当我运行下面的代码时,它会创建表单,但是表单不会被填充

我测试了文件的读取。它能够很好地呼应出名称、地区、lat和lng

<?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);
?>

当变量位于双引号内时,不应转义单引号。因此,将insert查询更改为:

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

您也不需要后面的分号

您是从脚本动态创建表的吗?!?不要那样做!旁注:请使用
mysqli
PDO
而不是
mysql
@luk2302我认为他试图自动化这个过程,因为他希望使用
foreach
循环创建许多表。是的,许多表都完全相同,只有不同的名称,这有点有用……好吧,这是可能的。。。。为什么要在这里转义一些字符“
”…值(NULL、“$name\”、“$region\”、“$latitude\”、“$longitude\”);“
?哈哈,我已经使用PHP和MySQL好几年了,我甚至不知道可以用这种方式将变量插入字符串中!我一直在做令人难以置信的乏味的
“我的“$var.”语句”
@AdiBradfield lol!这是我从一位像你这样的专家那里学到的。:)没想到,我想我太依赖IDE了。工作得很有魅力。谢谢。@KevinPaladin它让我想知道我还错过了什么PHP小技巧!真不敢相信,在我第一次学习的时候,我从来没有在任何教程中看到过@完全正确!我相信你会学到更多这样的东西,当你在这里阅读别人的代码时。