Php 如何在mysql的每一行中插入文件名作为值?
在我的trend_表中有这个结构,我正在将一个csv文件上传到mysql服务器。我想将我的文件名插入每行的日期。如何将文件名作为我的Php 如何在mysql的每一行中插入文件名作为值?,php,mysql,Php,Mysql,在我的trend_表中有这个结构,我正在将一个csv文件上传到mysql服务器。我想将我的文件名插入每行的日期。如何将文件名作为我的date\u列的值 示例2018-10-02\u trx\u result.csv是我的文件名,因此当我上传我的csv时,2018-10-02应该放在每一行中 date_sourced : date sha1: varchar(255) vsdt: varchar(255) trendx:varchar(255) notes:varchar(255) 用于上载我的
date\u
列的值
示例2018-10-02\u trx\u result.csv
是我的文件名,因此当我上传我的csv时,2018-10-02
应该放在每一行中
date_sourced : date
sha1: varchar(255)
vsdt: varchar(255)
trendx:varchar(255)
notes:varchar(255)
用于上载我的CSV的PHP代码
<?php
if(isset($_POST['submit'])) {
$host = 'localhost';
$user = 'root';
$password = '';
$db = 'jeremy_db';
ini_set('max_execution_time', 500);
$con = mysqli_connect($host,$user,$password) or die('Could not' .mysqli_error($con));
mysqli_select_db($con, $db) or die ('Could not' .mysqli_error($con));
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
ini_set ('memory_limit', filesize ($file) + 4000000);
$c = 0;
while(($csvdata = fgetcsv($handle,10000,","))!== FALSE){
$sha1 = $csvdata[0];
$vsdt = $csvdata[1];
$trendx = $csvdata[2];
$sql = "INSERT INTO jeremy_table_trend (sha1,vsdt,trendx) VALUES ('$sha1','$vsdt','$trendx')";
$query = mysqli_query($con , $sql);
$c = $c+1;
}
if($query){
echo '<script type="text/javascript">';
echo ' alert("CSV uploaded to server");';
echo ' window.location.href = "trendx.php";';
echo '</script>';
}
else {
echo "SLAM";
}
}
?>
如果您的文件名的格式为2018-10-02_trx_result.csv
(即日期后跟\uu
和名称的其余部分),您可以使用以下方法提取日期部分:
然后,您可以编辑查询以包含$date
的值:
$sql = "INSERT INTO jeremy_table_trend (date,sha1,vsdt,trendx)
VALUES ('$date','$sha1','$vsdt','$trendx')";
请注意,您确实应该使用准备好的语句来防止(例如)数据值中包含单引号以及其他可能的SQL注入攻击。看。你可以这样做
$date = explode("_", !real filename here!)[0];
您可以直接在sql语句中插入$date
。还要确保文件中的日期格式始终为YYYY-MM-DD
那么,您到底面临什么问题呢?如何将文件名作为我的日期列的值这在我的每一行中给出0000-00-00,听起来您的文件名与您提到的格式不符,或者可能有路径?如果您尝试list($date)=分解('''u',basename($'u FILES['file']['name']),会发生什么情况
你能回显一下$\u文件['file']['name']
看看里面有什么吗?(T\u加上空格,应该是“-”或标识符(T\u字符串)或变量(T\u变量)或数字(T\u NUM\u字符串)哦,对不起,我很抱歉,谢谢!我使用的是另一个路径,我忘了:)很高兴看到它工作了-你需要basename
?如果是这样,我会更新答案。
$sql = "INSERT INTO jeremy_table_trend (date,sha1,vsdt,trendx)
VALUES ('$date','$sha1','$vsdt','$trendx')";
$date = explode("_", !real filename here!)[0];