2015-05-06 3 views
1

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

SELECT * FROM `meow` WHERE profile LIKE '%$username%' 

Но проблема я столкнулся, если кто-то кладет буквы «А», он будет тянуть все, что содержит а и это немного угрозу безопасности на мой end, Как мне искать только 1 столбец, чтобы узнать, соответствует ли он точно имени пользователя? не весь стол?

+1

Если вы не хотите тянуть все для матча, просто удалите 'LIKE' с' = ' –

+1

' SELECT * FROM \ 'meow \' WHERE \ 'profile \' = '$ username'' –

+0

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

ответ

2

Для точной строки соответствия вы если = оператор вместо оператора like:

SELECT * FROM `meow` WHERE profile = '$username' 
0

Вместо использования, как использование равной

попробовать это:

SELECT * FROM meow WHERE profile = '$username' 
+0

Да, но я забыл упомянуть, строка im после находится в ссылке! например http://example.com/fpix?domusername и $ username.example.com, это не просто $ username, у него есть куча вещей. –

0

Попробовать -

"SELECT * FROM `meow` WHERE profile LIKE '$username'" 

для точного соответствия.

1

Прекратите использование конкатенации строк, чтобы построить запрос. Это зло. Вместо этого используйте mysqli или pdo и используйте подготовленные инструкции.

$pdo = new PDO('mysql:host=localhost;dbname=yourdb', 'your_username', 'your_password'); 

$stmt = $pdo->prepare("SELECT * FROM `meow` WHERE profile = ?"); 
$stmt->execute(array($username)); 

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

Кроме того, используйте равенство, вместо like, если вы хотите, чтобы проверить точное соответствие.

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