SQL / PHP插入不起作用

时间:2016-03-17 15:42:47

标签: php sql

这几天前一切正常,但现在它不再将数据写入数据库了,我无法弄清楚原因。

我试图查看从CSV文件中获取数据是否出错,但是当我尝试上传数据时,它已成功回显,因此它不是代码的一部分。

连接正常,因为它没有引发数据库连接错误'。我有这个系统的其他部分仍可正常使用此连接。

我认为这与数据库中的表本身有关,而不是PHP代码。当INSERT停止工作时,我尝试创建一个新的相同的表并写入,但这也没有用。

PHP:

<?php  

//connect to the database 
$server = 'xx';
$connectionInfo = array(xx);
$connection = sqlsrv_connect($server, $connectionInfo);

if (!$connection) 
    {
    die('Database connection error');
    }

session_start();

if (isset($_FILES['csv']['size']) == 0) 
{ 

echo "<p2>". "Hello, ". $_SESSION['name'].  ". You can upload your CSV file for your school, ". $_SESSION['school']. ", below."."</p2>";
$school = $_SESSION['school'];
}

if (isset($_FILES['csv']['size']) > 0) { 
    //get the csv file 
    $file = $_FILES['csv']['tmp_name']; 
    $handle = fopen($file,"r"); 

    //loop through the csv file and insert into database 
    do { 
        if (isset($data[0]))
         {                                                          
            $school = $_SESSION['school'];
            $species = $data[0];
            $count = $data[1];      
            $surveyor = $_SESSION['name'];
            date_default_timezone_set('Europe/London');
            $upload_date = date('d/m/y h:i:s a', time());

            echo "<p2>". $school. " ". $species. " ". $count. " ". $surveyor. " ". $upload_date. "<br>". "</p2>";

            $parameters = array($school, $species, $count, $surveyor, $upload_date);                                                
            $Query = "INSERT INTO findings(School, Species, Count, Surveyor, Upload_Date) VALUES (?,?,?,?,?)";
            $results = sqlsrv_query($connection, $Query, $parameters); 
        } 
    } while ($data = fgetcsv($handle,1000,",","'")); 
echo "<p2>". "Upload complete". "</p2>". "<br>";
} 

?> 

<body> 

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
   <br /> 
  <input name="csv" type="file" id="csv" accept=".csv" /> 
  <input type="submit" name="Submit" value="Submit" /> 
</form> 

</body> 
</html> 

表:

    CREATE TABLE [dbo].[findings]
(
    [School] VARCHAR(50) NOT NULL, 
    [Species] VARCHAR(50) NOT NULL, 
    [Count] INT NOT NULL, 
    [Surveyor] VARCHAR(50) NOT NULL, 
    [Upload_Date] DATETIME NOT NULL 
)

这是我第一次在这里发帖,所以如果您需要任何进一步的信息,请告诉我

3 个答案:

答案 0 :(得分:0)

您需要准备SQL查询才能多次运行它,您的代码似乎多次执行查询,就像在do while循环中一样。

你的一些参数需要通过参考ex传递。 $ species,&amp; count

// Set up the proc params array - be sure to pass the param by reference
$parameters = array($school,
&$species,
&$count, ..., ..., ...
);

在你做的事情之外做这样的事情......

$stmt = sqlsrv_prepare( $connection, $Query, $parameters);
if( !$stmt ) {
    die( print_r( sqlsrv_errors(), true));
}

在循环内......

重新标记引用的变量

       $species = $data[0];
        $count = $data[1]; 

if(!sqlsrv_execute( $stmt )) {
      die( print_r( sqlsrv_errors(), true));
}

答案 1 :(得分:-1)

我尝试检查插入查询后git是否返回任何内容,例如:

ssh-agent

这可能包含你的答案。

答案 2 :(得分:-1)

发布什么回应这一行:

echo "<p2>". $school. " ". $species. " ". $count. " ". $surveyor. " ". $upload_date. "<br>". "</p2>";

您的表格已指定为NOT NULL列。所有变量都必须具有价值。

PS:对不起我的英文。