【问题标题】:Updating Database using Csv File使用 Csv 文件更新数据库
【发布时间】:2014-02-16 13:55:40
【问题描述】:

当我上传 Csv 文件时,它总是显示 Incorrect Table "。

我检查了表名,它是正确的 但我仍然不知道为什么它不更新数据库。 可以使用 Csv 文件更新数据库吗?还是只能插入?

<?php
include 'connect.php';
$modname = $user_data['name'];
$usy = $_POST['usy'];
$usem = $_POST['usem'];
$term2 = $_POST['term2'];
if ( isset( $_FILES['userfile'] ) )
{
  $csv_file = $_FILES['userfile']['tmp_name'];

  if ( ! is_file( $csv_file ) )
    exit('File not found.');



  if (($handle = fopen( $csv_file, "r")) !== FALSE)
  {
      fgetcsv($handle); // get line 0 and move pointer to line 1
      fgetcsv($handle); // get line 1 and move pointer to line 2
      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
      {  
        {
        $sql = "UPDATE `$term2` SET grade = $data[1] WHERE name_id = $data[0], section = $data[4], subject = $data[5], uploaded = $modname, school_year = $usy , semester = $usem"; 
        $exec = mysql_query($sql) or die(mysql_error());
        $sql2 = "DELETE FROM `$term2` WHERE `name_id` = '' AND `grade` = '';";  
        $exec = mysql_query($sql2) or die(mysql_error());   

        echo ("The following data has been added to the database");
        }
      }
    }
  }
?>
<form name="form2" enctype="multipart/form-data" method="POST" onSubmit="return validateForm()">
    <H1>Update CSV File</H1>
    School Year:<input type="text" name="usy"> Semester:    <select type="text" name="usem">
    <option value="1st">1st</option>
    <option value="2nd">2nd</option>
    </select>
    <br />
    Term:       <select type="text" name="term2">
    <option value="prelims">Prelims</option>
    <option value="midterm">Midterm</option>
    <option value="prefinals">Prefinals</option>
    <option value="finals">Finals</option>
    </select>
    <br />
    <br />
    <input name="userfile" type="file">
    <br />
    <input type="submit" value="Upload">



        </form>

【问题讨论】:

  • 向我们展示一个示例查询
  • id/name/section/subject/grade/uploaded/school_year/semester 1/sample/samplesec/samplesub/80/sampleprof/2013-2014/1st

标签: php csv


【解决方案1】:

你的sql语句好像出错了

$sql = "UPDATE `$term2` SET grade = $data[1] WHERE name_id = $data[0], section = $data[4], subject = $data[5], uploaded = $modname, school_year = $usy , semester = $usem"; 

WHERE 子句必须使用 AND/OR 代替逗号 (,) 来添加条件。应使用逗号分隔您要通过更新设置的列/字段。

【讨论】:

  • 请给我你更正的sql。您还必须将值放在单引号内。
  • $sql = "UPDATE $term2 SET Grade = $data[1] WHERE name_id = $data[0] AND section = $data[4] AND subject = $data[5] 并上传= $modname AND school_year = $usy AND 学期 = $usem";
  • 将字符串值放在 sql 中的单引号内。因此,将您的 sql 修改为 - $sql = "UPDATE $term2 SET Grade = '$data[1]' WHERE name_id = $data[0] AND section = '$data[4]' AND subject = '$data[5 ]' AND 上传 = '$modname' AND school_year = '$usy' AND 学期 = '$usem' ";我假设 name_id 是数字类型。
  • 是的 Name_id 是 Id 类型尝试过它仍然给出了不正确的表名“错误
  • 能否请您发送您的 sql 的回声 - echo $sql;我觉得你的表名确实有错误。
【解决方案2】:

您的查询存在一个缺陷: "$sql = "UPDATE $term2 SET 等级 = $data[1] WHERE..." 从$term2 中删除 $,它应该是: "$sql = "UPDATE term2 SET Grade = $data[1] WHERE..."

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2023-03-24
    • 2019-02-19
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多