2017-01-23 3 views
0

У меня есть функция, которая должна дать мне имя сотрудника из его идентификационного номера таким образом мой РНР как этотИспользование переменной в функции PHP возвращения значения

$staffId = $_GET['staff_id']; 
$staff = staff_load($staffId); 

и моя функция как этот

function staff_load() 
{ 
$dbh = dbh_get(); //connects to database 

$sql = 'select user_name from user_staff where user_id = ?'; 
$stmt = $dbh->prepare($sql); 
$stmt->execute(); 
$staff = $stmt->fetch(); 

dbh_free($dbh); //disconnects from database 
return $staff; 
} 

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

<td>Book for ' . $staff . '</td> 
+0

Во-первых, 'var_dump' ваш вар' $ staff' и сказать, что она возвращается. – Dmytrechko

+2

Определение функции ('function staff_load()') должно принимать переданное ему значение ('function staff_load ($ id)') и связывать его в SQL-запросе –

+2

'function staff_load()' не принимает параметр, это должен быть 'function staff_load ($ id)', а затем внутри 'execute()' add 'execute ([$ id])' – KDOT

ответ

3

Во-первых, вы забыли включить параметр в определении функции:

function staff_load($id) { 

Затем вам нужно привязать параметр подготовленного оператора.

$sql = 'select user_name from user_staff where user_id = $1'; 
$stmt = $dbh->prepare($sql); 
$stmt->execute(array($id)); 

Далее fetch() возвращает массив, вам нужно извлечь user_name элемент из массива:

$row = $stmt->fetch(); 
if ($row) { 
    $staff = $row['user_name']; 
} else { 
    $staff = false; 
} 
+0

не дает мне ничего – Kilisi

+0

изменила функцию к этому, но до сих пор ничего функции staff_load ($ staffId) { $ ДВГ = dbh_get(); $ sql = 'выберите имя_пользователя из user_staff, где user_id =: staffId'; $ stmt = $ dbh-> подготовить ($ sql); $ stmt-> execute(); $ stmt-> bindParam (': staffId', $ staffId); $ row = $ stmt-> fetch (PDO :: FETCH_ASSOC); if ($ row) { $ staff = $ row ['user_name']; } else { $ staff = false; } dbh_free ($ dbh); \t return $ staff; } – Kilisi

+0

Есть ли ошибки? Включили ли вы сигнализацию об ошибках PDO? Можете ли вы подтвердить, что используете PDO, как я предполагал? – Barmar

0

первую очередь вы должны передать параметр в staff_load функцию

function staff_load($staffId) 

во-вторых, вы должны связать параметру

$sql = 'select user_name from user_staff where user_id = :user_id'; 
$stmt = $dbh->prepare($sql); 
$stmt->bindParam(':user_id', $staffId); 
+0

ну, ваш placeholder '' 'не': user_id' .. – KDOT

+0

благодаря KDOT, copypasted из кода – Dima

+0

user_id должна равняться значению $ staffId – Kilisi

Смежные вопросы