Просто эхо-запрос вместо var_dump

Как я могу изменить свой код только с var_dump на echo?

Код:

$link = mysqli_connect("$myHost", "$myUser", "$myPass", "$myDB");

    // Check connection
    if ($link === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }


    $username = mysqli_real_escape_string($link, $_SESSION['username']);

var_dump($username);

   $sql = "SELECT * FROM exampletable where username = $username";
    if ($result = $link->query($sql)) {

        while ($row = $result->fetch_row()) {
            var_dump($row);
        }


    }

Потому что, если я var_dump($row);, я всегда получаю это:

'[email protected]' (length=16)

Но я хочу отображать только имя пользователя :) Я новичок в php, извините.

Спасибо

ПРЕДУПРЕЖДЕНИЕ: при использовании mysqli вы должны использовать параметризованные запросы и bind_param для добавления пользовательских данных в свой запрос. НЕ НАДО используйте для этого экранирование вручную и интерполяцию или конкатенацию строк, потому что вы создадите серьезный Ошибки внедрения SQL. Случайно неэкранированные данные представляют собой серьезный риск. Использование связанных параметров менее подробно, и их легче проверить, чтобы убедиться, что вы все делаете правильно.
tadman 14.09.2018 18:41

Примечание. Объектно-ориентированный интерфейс mysqli значительно менее подробен, что упрощает чтение и аудит кода, и его нелегко спутать с устаревшим интерфейсом mysql_query. Прежде чем вы слишком увлечетесь процедурным стилем, стоит переключиться на него. Пример: $db = new mysqli(…) и $db->prepare("…"). Процедурный интерфейс является артефактом эпохи PHP 4, когда был представлен API mysqli, и его не следует использовать в новом коде. Вы уже используете частично в объектно-ориентированном стиле. Вы должны полностью и последовательно придерживаться его.

tadman 14.09.2018 18:41

Примечание. Постарайтесь избавиться от привычки загромождать код ненужными вещами, такими как === false. Многие функции предназначены для возврата значений, которые оцениваются как логически истинные или ложные, поэтому они являются избыточными.

tadman 14.09.2018 18:41

print_r ($ имя пользователя);

toor 14.09.2018 18:42

@tadman off: TC не хочет создавать банковское приложение, это только первые шаги в php. Думаю, сложно начинать с безопасности)

toor 14.09.2018 18:45

@toor Первый шаг при изучении кодирования запросов к базе данных - это их правильное кодирование. Нет никакой пользы от использования ярлыков: они могут причинить гораздо больше боли и проблем, чем сэкономить во времени. Во многих профессиях безопасность - это первое, чему они учат, и на то есть веские причины. Маленькие, невинные ошибки могут быть дорогие.

tadman 14.09.2018 18:47
print_r($username); совпадает с var_dump, а не echo
sarahn22 14.09.2018 18:48

@tadman off: Думаю, у TC старый мануал. И через несколько лет ваши предложения, возможно, устареют) Я считаю, что это лучший способ кодировать что-то с ошибками на первых этапах, чем ничего не кодировать, но отлично)

toor 14.09.2018 18:52

@toor Я не тот, кто делает огромную проблему из этих ошибок, я просто помечаю их и ссылаюсь на ресурсы, которые объясняют, что делать, чтобы их исправить. На раннем этапе чрезвычайно важно усвоить хорошие привычки и понять, как действовать безопасно. Я занимаюсь этим годами, так как PHP-сообщество исторически не уделяло этому достаточно времени. Если вы хотите подойти и предложить совет, это здорово, но если вы говорите, что это не имеет большого значения, вы » повторное продвижение безразличия и невежества.

tadman 14.09.2018 18:55

@ sarahn22 не то же самое, print_r не показывает длину данных. Попробуйте echo $ username ['username'], там [] содержится имя столбца db, или см. Руководство для функции implode

toor 14.09.2018 19:02

Понятия не имею, как вы, возможно, получаете: '[email protected]' (length=16), когда вы var_dump($row); ... это просто не имеет никакого смысла. Я думаю, вы имеете в виду ... вы видите только ПЕРВЫЙ var_dump($username);, потому что ваш запрос фактически не выполняется, а не следуете за циклом while (на вашем else нет if, чтобы отображать ошибки).

IncredibleHat 14.09.2018 19:31
mysqli_connect("$myHost", "$myUser", "$myPass", "$myDB"); Если это все переменные, удалите кавычки. :: mysqli_connect($myHost, $myUser, $myPass, $myDB);
Martin 14.09.2018 20:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
12
761
2

Ответы 2

Ваш запрос не выполняется, потому что вы забыли заключить в кавычки $username. Должен быть:

$sql = "SELECT * FROM exampletable where username = '$username'";

Затем в своем цикле вы можете:

while ($row = $result->fetch_assoc($result)) {
    echo $row['somecolumnname'];
}

чтобы увидеть содержимое этого столбца в каждой строке, соответствующей имени пользователя.

sarahn22! Я вижу, что вы новый участник, поэтому добро пожаловать в StackOverflow. :)

Согласно функции PHP MySQLi fetch_row()документация, всякий раз, когда вы ее используете, вы получаете массив с каждым столбцом в качестве индекса или null, если строки не были найдены.

В этом случае, учитывая, что столбец вашего имени пользователя будет первым столбцом, вы можете получить его, набрав:

echo $row[0];

Итак, для лучшего понимания представьте себе таблицу базы данных как:

username | first_name | last_name
---------------------------------
user01   | John       | Snow

Вот результаты:

echo $row[0]; // Shows "user01";
echo $row[1]; // Shows "John";
echo $row[2]; // Shows "Snow";

Удачи на вашем новом пути в изучении PHP. :)

Другие вопросы по теме