Создание функции для запроса базы данных - PullRequest
0 голосов
/ 10 декабря 2011

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

function connectUser($ip) {
   $q = "SELECT * FROM users where ID='$ID'";
   $s = mysql_query($q);
   $r = mysql_fetch_array($s);
}

Но когда я попытаюсь использовать его, он не получит доступ к строке так, как я хочу.

$user = '999';
connectUser($user)
echo $r['name'];

Но если я добавлю echo $ r ['name'];в функции это будет работать.

Ответы [ 4 ]

1 голос
/ 10 декабря 2011

2 основных проблемы в вашем коде

  1. функция ничего не возвращает, и вы не присваиваете ее результат переменной.
  2. Ваши переменные не совпадают. $ip не похоже на ту же переменную с $ID

так, этот будет работать

function connectUser($id) { 
   $q = "SELECT * FROM users where ID=".intval($id); 
   $s = mysql_query($q); 
   return mysql_fetch_array($s); 
} 

$user = '999'; 
$r = connectUser($user) 
echo $r['name']; 
1 голос
/ 10 декабря 2011

ваша функция ничего не возвращает. добавить return $r['name'] в конце функции.
тогда echo connectUser($user);

0 голосов
/ 10 декабря 2011

Эта функция не работает,
, поскольку вы не указали соединение с базой данных в функции,
и ничего не возвращали ( PHP вернет NULL )

Пожалуйста, поймите, что такое переменная область действия сначала,
и функция

Работоспособный пример, может выглядеть так: -

function connectUser($db, $ip) 
{
  $q = "SELECT * FROM users where ID='$ID'"; // vulnerable for sql injection
  $s = mysql_query($q, $db);                 // should have error checking
  return mysql_fetch_array($s);              // value to be returned
}

Как использовать: -

$db = mysql_connect(...);
$res = connectUser($db, "some value");
0 голосов
/ 10 декабря 2011

Это потому, что переменная $r не возвращается функцией, поэтому она никогда не устанавливается вне функции. Вот что вы должны иметь:

function connectUser($ip) {
   $q = "SELECT * FROM users where ID='$ip'";
   $s = mysql_query($q);
   return mysql_fetch_array($s);
}

А потом снаружи есть:

$user = '999';
$r = connectUser($user)
echo $r['name'];

Вы также можете взглянуть на этот вопрос: подготовленные заявления - нужны ли они

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...