Функция, которая возвращает имя пользователя

Здравствуй,

Что случилось с моей функцией? Кажется, это не работает, но я не знаю, почему. Функция должна возвращать имя пользователя:

function getusername($username) {
    $sql = "SELECT username FROM users WHERE id='".$username."' LIMIT 1";
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    return $row['$username'];

Когда я использую его в этом коде, он ничего не возвращает:

if (mysql_num_rows($res) == 1) {
    echo "<table width='100%'>";
   //Check to see if the person accessing this page is logged in
    if (isset($_SESSION['username'])) { echo "<tr><td colspan='2'><input type='submit' value='Add Reply' onClick=\"window.location = 'post_reply.php?cid=".$cid."&tid=".$tid."'\" />
"; } else { echo "<tr><td colspan='2'>

Please log in to add your reply.


</td></tr>"; } //Fetch all the topic data from the database while ($row = mysql_fetch_assoc($res)) { //Query the posts table for all posts in the specified topic $sql2 = "SELECT * FROM posts WHERE category_id='".$cid."' AND topic_id='".$tid."'"; //Execute the SELECT query $res2 = mysql_query($sql2) or die(mysql_error()); //Fetch all the post data from the database while ($row2 = mysql_fetch_assoc($res2)) { //Echo out the topic post data from the database echo "<tr><td valign='top' style='border: 1px solid blue;'><div style='min-height: 125px;'>".$row['topic_title']."
by ".getusername($row2['post_creator'])." - ".convertdate($row2['post_date'])."
".$row2['post_content']."</div></td><td width='200' valign='top' align='center' style='border: 1px solid blue;'>User Info Here</td></tr><tr><td colspan='2'>
</td></tr>"; }
0
nl ja de
Но вы изучаете плохие практики
добавлено автор lam3r4370, источник
Стоит отметить, что этот код уязвим для атак SQL Injection. Вы должны убедиться в том, что пользовательский вход прошел санацию, предпочтительно использовать инструкцию подготовки, чтобы данные были отделены от самого запроса.
добавлено автор Spike, источник
его просто для практики
добавлено автор theuserkaps, источник

3 ответы

You should change return $row['$username']; to return $row['username'];

3
добавлено
Значит, ничего не возвращает?
добавлено автор lam3r4370, источник
его не работает, если я удалю знак доллара
добавлено автор theuserkaps, источник

ИСПОЛЬЗОВАТЬ PDO.

Вы можете прочитать об этом здесь .

Если я найду способ заставить вас искать '; пользователей DROP TABLE, - , то я могу дать вам очень плохой день. Подсказка. Можно ли выбрать категорию или номер темы, используя $ _ GET vars?

Вы также должны использовать JOIN

Выполнение одного запроса к базе данных лучше, чем 10:

SELECT posts.*, users.username FROM posts
JOIN users ON (users.username = posts.post_creator)
WHERE category_id=:category_id AND topic_id=:topic_id

Знак доллара - вещь PHP, а не вещь MySQL.

return $row['$username'];

должно быть:

return $row['username'];
1
добавлено
не работает, если я удаляю знак доллара
добавлено автор theuserkaps, источник

Где вы вызываете mysql_connect и mysql_select_db в своем коде?

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

global $dbHandle;
$dbHandle = mysql_connect("server string");

Тогда ваша функция будет выглядеть примерно так:

function getusername($username) {
global $dbHandle;
$sql = "SELECT username FROM users WHERE id='".$username."' LIMIT 1";
$res = mysql_query($sql, $dbHandle) or die(mysql_error());
$row = mysql_fetch_assoc($res);
return $row['$username'];
}
0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp