Как я могу изменить свой код из 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)
Но я хочу, чтобы echo только имя пользователя :) Я новичок в php извините.
Спасибо
Ваш запрос терпит неудачу, потому что вы забыли поставить кавычки вокруг $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. :)
mysqli
вы должны использовать параметризованные запросы иbind_param
для добавления пользовательских данных в ваш запрос. НЕ используйте ручное экранирование и интерполяцию или конкатенацию строк для достижения этой цели, потому что вы будете создавать серьезные ошибки SQL-инъекций . Случайно ушедшие данные представляют серьезный риск. Использование связанных параметров менее многословно и проще для проверки, чтобы убедиться, что вы делаете это правильно.mysqli
значительно менее многословен, что облегчает чтение и аудит кода, и его нелегко спутать с устаревшим интерфейсомmysql_query
. Прежде, чем вы слишком инвестируете в процедурный стиль, стоит переключиться. Пример:$db = new mysqli(…)
и$db->prepare("…")
Процедурный интерфейс является артефактом эпохи PHP 4, когда был представленmysqli
API, и его не следует использовать в новом коде. Вы уже частично используете объектно-ориентированный стиль. Вы должны посвятить себя этому полностью и иметь последовательность.