在php中设置文件名的表的列名

时间:2018-06-01 18:39:55

标签: php mysql xampp

  

在php

中设置文件名表的列名      

这是我的代码,它创建的文件名为" SELECT Name_of_company FROM companyinformation WHERE id =" $ id"在我的文件夹"。

    <?php
$con = mysqli_connect("127.0.0.1","root","","dbname");
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
session_start();
$id=$_GET['id'];
$sql='
SELECT Name_of_company 
  FROM companyinformation 
 WHERE id="$id"
';
$result=mysqli_query($con,$sql);
$rows=mysqli_fetch_array($result);
echo $sql;


$createfile=$rows.".txt";

$email=$_SESSION['coll'];
$rnumber=$_SESSION['roll_number'];
$rollnumber="Roll Number \n";
$Email="Email Address ";
$newline="\n";
$rollema=$Email.$rollnumber;

$myfile = fopen($createfile, "a") or die("Unable to open file!");
fwrite($myfile, $email);
fwrite($myfile," ");
fwrite($myfile, $rnumber);
fwrite($myfile, $newline);
fclose($myfile);
//echo "<script>alert('Register Successfully');window.open('studentloginpage.php','_self');</script>";
?>

1 个答案:

答案 0 :(得分:2)

mysqli_fetch_array返回一个数组(如果没有行,则返回FALSE。)

数组中的每个条目都包含结果集中单个列的值(对于获取的一行)。

通过列的名称引用数组的元素。

$createfile = $rows['Name_of_company'].".txt";
                   ^^^^^^^^^^^^^^^^^^^

另外,考虑测试回报

$rows=mysqli_fetch_array($result);

if(! $rows) {
   // we got a row, continue processing
   ...
} else {
   // no row fetched
   ...
}

(另外,$rows是复数。它只是一个变量名,我们可以将它命名为$fargedlybarp或其他什么。但我倾向于将名称变为单数,例如($row)比复数,向未来的读者表明我们希望这包含一行。)

if( ! $row = mysqli_fetch_array($result) ) {
   // we got a row, continue processing
   ... 
} else {
   // no row fetched
   ...
}

<强>后续

正如@tadman指出的那样,这里没有插值:

$sql = 'SELECT Name_of_company FROM companyinformation WHERE id="$id"';

单引号是一个字符串文字,不做任何变量解释。

可能,我们希望将$id变量的值合并到SQL文本中。如果这是一个整数值,那么我们可以这样做:

$sql = 'SELECT Name_of_company FROM companyinformation WHERE id='''
     . intval( $id ) 
     . '''' ;

否则,$id的值需要正确转义

$sql = 'SELECT Name_of_company FROM companyinformation WHERE id='''
     . mysqli_real_escape_string($con, $id )
     . '''' ;

正如@tadman所建议的那样,使用预备语句绑定占位符是最佳实践模式。

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

$sql = 'SELECT Name_of_company FROM companyinformation WHERE id = ?';

并准备,bind_param,执行,......