Как включить имя сеанса в команду SQL, но сделать имя сеанса переменной? - PullRequest
0 голосов
/ 06 мая 2020

У меня тут небольшая проблема, с которой я хотел бы получить помощь.

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

Итак, вот строка, с которой у меня возникла проблема (и другие строки работают отлично, протестированы и все):

$stmt = $con->prepare('SELECT username,date,info,final,bal FROM tr WHERE id = ? AND username='); 
$stmt->bind_param('i', $_SESSION['id']);
$stmt->execute();
$stmt->bind_result($username,$date,$info,$final,$bal);
$stmt->fetch();
$stmt->close();

и в html:

<body class="loggedin">
      <br><?=$username?>
      <br><?=$date?>
      <br><?=$info?>
      <br><?=$final?>
      <br><?=$bal?>

Теперь, как вы можете видеть, все это переменные. Это личная информация для каждого пользователя, поэтому я создал базу данных и поместил имя пользователя так же, как имя сеанса. Теперь я хочу:

$stmt = $con->prepare('SELECT username,date,info,final,bal FROM trans WHERE id = ? AND username='); 

Я хочу поставить username = в имя, которое сеанс выдает каждому соответствующему пользователю. Я попытался ввести: {$_SESSION['name']}

.$_SESSION['name'].v

'".$_SESSION['name']."' в командную строку, но ничего из этого не работает. Я получаю ошибку Итак, что я должен сказать, что он читает переменную и дает номер MySQL, вместо MySQL для поиска по «session_name», я хочу, чтобы он go позволял сказать «user1», который выходит в база данных. Был бы очень признателен, если бы кто-нибудь мог мне помочь в этом. ps Не первая мировая проблема, а как добавить разрывы строк между входами в MySQL? Например, вместо отображения info1info2 он показывает info1 info2. Есть способ? спасибо за чтение!

1 Ответ

0 голосов
/ 06 мая 2020

Вам нужно привязать нужный вам параметр ($ _SESSION ['name']) в вашем запросе:

$stmt = $con->prepare('SELECT username,date,info,final,bal FROM tr WHERE id = ? AND username = ?'); 
// Incorrect.
$stmt->bind_param('i', $_SESSION['id']); // Bind id as an int
$stmt->bind_param('s', $_SESSION['name']); // Bind name as a string
$stmt->execute();

Правильная привязка нескольких параметров выполняется следующим образом:

// "is" is for two params, int, and string.
$stmt->bind_param("is", $_SESSION['id'], $_SESSION['name']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...