установить имя столбца таблицы для имени файла в php - PullRequest
0 голосов
/ 01 июня 2018

установить имя столбца таблицы для имени файла в php

, это мой код, он создает файл с именем «SELECT Name_of_company ОТ компании-информации 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 голосов
/ 01 июня 2018

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
   ...
}

FOLLOWUP

Как указывает @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, execute, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...