Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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 mysql从文件插入更新(如果存在)或更新_Php_Mysql - Fatal编程技术网

Php mysql从文件插入更新(如果存在)或更新

Php mysql从文件插入更新(如果存在)或更新,php,mysql,Php,Mysql,我有一个mysql表(my_表),它有3列(名称、年龄、地点)。我有一个新的文本文件(data.txt制表符分隔的数据文件),它有两列(名称和位置)。我想将文件“data.txt”中的信息插入我的_表,条件是名称相同(在mysql表和文本文件“data.txt”中),更新行(在第3列中插入位置值),否则创建新行(其中年龄将为NULL) 如何在mysql中做到这一点???(我想插入文本文件中的值)首先,确保表中包含以下内容: 名称上唯一 年龄可以为零 以下查询将满足您的需要: INSERT INT

我有一个mysql表(my_表),它有3列(名称、年龄、地点)。我有一个新的文本文件(data.txt制表符分隔的数据文件),它有两列(名称和位置)。我想将文件“data.txt”中的信息插入我的_表,条件是名称相同(在mysql表和文本文件“data.txt”中),更新行(在第3列中插入位置值),否则创建新行(其中年龄将为NULL)


如何在mysql中做到这一点???(我想插入文本文件中的值)

首先,确保表中包含以下内容:

  • 名称上唯一
  • 年龄可以为零
  • 以下查询将满足您的需要:

    INSERT INTO my_table SET name = 'Name', place = 'Place' 
    ON DUPLICATE KEY UPDATE place = 'New Place'
    
    有了读取文件的代码,您可以使用:

    $file = new SplFileObject('data.txt');
    while($file->eof() === true) {
      $line = $file->fgets();
      $data = explode("\t", $line);
    
      // execute query:
      $query = sprintf(
        "INSERT INTO my_table SET name = '%1$s', place = '%2$s' ON DUPLICATE KEY UPDATE place = '%2$s'",
        $data[0], // escape this
        $data[1] // escape this
      );
    }
    

    请注意,您需要使用mysql客户端库执行该查询。

    文本文件data.txt如何?如何指定从此文件获取数据?您可以为此打开一个新问题(或更新此问题),确保告知您的文件的格式,否则我们将无法提供帮助。我试图编辑问题。。希望现在它更有意义。感谢您的努力。我需要知道您的.txt文件的内容是什么样的。它是一个简单的选项卡分隔文本文件。示例行-John\tUSA
    $file = new SplFileObject('data.txt');
    while($file->eof() === true) {
      $line = $file->fgets();
      $data = explode("\t", $line);
    
      // execute query:
      $query = sprintf(
        "INSERT INTO my_table SET name = '%1$s', place = '%2$s' ON DUPLICATE KEY UPDATE place = '%2$s'",
        $data[0], // escape this
        $data[1] // escape this
      );
    }