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