在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>";
?>
答案 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,执行,......