2013-08-07 3 views
-1

У меня есть код, получающий информацию из базы данных MySQL в PHP, а затем я хочу сравнить переменную $ username с этой информацией с помощью функции strpos() ... но она не работает. .. что я могу сделать?strpos() function on mysql_fetch_array

$username = $_GET['username']; 
$connection = new DB_Database(); 
$res = $connection->Select(); 
if ($res) { 
$output = ""; 
while ($row = mysql_fetch_array($res)) { 
    if (strpos((string)$row['username'], $username)) { 
     $output.=" " . $row["username"] . " "; 
    } 

echo $output; 
+2

«это не работает» не является допустимым описанием проблемы. – PeeHaa

+3

Почему вы не делаете это сравнение как часть SQL-запроса для начала? Кроме того, вы просто забываете разницу между '== 0' и' === false', как описано на странице руководства для 'strpos'? – deceze

ответ

1

Я не уверен, почему вы используете strpos вместо прямого сравнения с ==, но этот код не будет работать корректно, если $row['username'] == $username.

Причина заключается в том, что в этом случае strpos вернется 0, который вычисляет false - увидеть гигантское красное предупреждение на documentation page.

+0

Я хочу найти что-то вроде «mik» в «mikes peters». У меня в базе данных есть строка с именем «имя пользователя», я хочу искать имена со строкой в ​​ней. Просто это причина использования strpos() –

+0

@PouyanIzadi: В этом случае 'strpos (...)! == false "будет работать. Но это было бы очень плохой способ реализовать поиск - переместите логику фильтрации в ваш SQL вместо чего-то вроде 'WHERE username LIKE%: param%'. – Jon