2013-06-17 3 views
-1

К сожалению, о последнем сообщении у меня было. Вот мой пересмотр, пожалуйста, помогите мне.Ошибка при передаче значений по функции

<?php 
//connect database 

$sql = "SELECT * FROM user where user_id = 8320 AND password = 'admin' "; 
$query = pg_query($sql); 
var_dump($row = pg_fetch_array($query)); //dumps correctly. 

?> 

НО ПРОБЛЕМА THIS..when Я пытаюсь сделать это в качестве функции LIKE:

function check($user_id, $password) 
{ 
$sql = "SELECT * FROM user where user_id = $user_id AND password = '$password' "; 
$query = pg_query($sql); 
$row = pg_fetch_array($query); 
return $row; 
} 

И ВЫЗВАТЬ ЕГО ЗДЕСЬ:

var_dump($data = check(8320, 'admin')); DUMPS NULL; 

Как же это закончилось, как это?

+1

Вы сбрасываете уравнение, а не возвращаете функцию. Сначала установите переменную '$ data' равным возврату функции, а затем дампом переменную ... или просто выгрузите функцию, например' var_dump (check (8320, 'admin')); ' – Sam

+0

yes .. Я уже сделал что .. все еще вывод NULL, хотя – user2429302

+0

test $ query после вызова pg_query ... Я думаю, что у вас нет никаких результатов или плохой запрос. – Orangepill

ответ

0

Попробуйте выполнить приведенный ниже код. Он должен хорошо работать для вас.

$data = check(8320, 'admin'); 
var_dump($data); 
+0

Я уже это сделал. Сбрасывает NULL – user2429302

+0

var_dump $ row inside проверить функцию и посмотреть, получите ли вы правильные результаты. если это что-то не так с вашим запросом. – Techie

+0

Я сбрасываю $ row внутри функции и dit dumps bool (false). почему что не так с запросом? – user2429302

1

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

function check($user_id, $password) 
{ 
    $dbconn = pg_connect("host=localhost dbname=test"); 
    $sql = "SELECT * FROM user where user_id = $1 AND password = $2 "; 
    $result = pg_query_params($dbconn, $sql, array($user_id,$password)); 
    $row = pg_fetch_array($result); 
    if (!$row) { 
     echo pg_last_error($dbconn); 
    } else { 
     return $row; 
    } 
} 
+0

да..Я интересуюсь, какая ошибка в моем запросе, когда данные, которые я передал, существуют в базе данных. – user2429302

+0

Вы должны просто спросить сервер базы данных, что такое ошибка, а не интересно об этом :) –

0

Похоже ваш PostgreSQL ресурс отсутствует внутри функции. У вас есть два варианта.

  1. Заявить ресурс подключения внутри функции, используя global.
  2. Установите соединение внутри функции.

Это первый вариант:

$conn = pg_connect('host','user','pass','db'); 

function check($user_id, $password) 
{ 
    global $conn; 
    $sql = "SELECT * FROM user where user_id = $user_id AND password = '$password' "; 
    $query = pg_query($conn, $sql); 
    $row = pg_fetch_array($query); 
    return $row; 
} 

И это второй вариант:

function check($user_id, $password) 
{ 
    $conn = pg_connect('host','user','pass','db'); 
    $sql = "SELECT * FROM user where user_id = $user_id AND password = '$password' "; 
    $query = pg_query($conn, $sql); 
    $row = pg_fetch_array($query); 
    return $row; 
} 

Согласно PHP manual, Вы можете пропустить ресурс соединения, но это не рекомендуется, так как это может стать причиной сложностей поиска ошибок в скриптах.

+0

Я пробовал объявить его внутри функции. еще не выход, который я хочу. Когда я сбрасываю внутри функции, он сбрасывает bool (false), и когда я выхожу за пределы funciton, он отбрасывает null – user2429302

+0

Время отладки. Попробуйте использовать этот код: 'var_dump ($ sql)' после строки '$ sql'. Дайте нам знать результат. –

+0

Когда я выкидываю $ sql, он выводит строку (59) «SELECT * FROM users WHERE user_id = 8320 AND password = ''" – user2429302

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