2015-07-03 3 views
1

Итак, я новичок в php, и я пытаюсь проверить, содержит ли таблица mysql переменную, заданную пользователем при поиске. Если таблица содержит переменную (это строка), то я хочу иметь возможность делать разные вещи в зависимости от ее существования.PHP проверяет, содержит ли таблица MySQL переменную

Я также должен отметить, что я новичок в разработке php!

Это то, что у меня есть до сих пор;

$db = new mysqli('IP', 'username', 'password', 'database'); 

$result = $db->query("SELECT * FROM tablename WHERE ColumnName =  $searchVar"); 

if(empty($result)){ 
    //No result Found 
}else{ 
    //Found result 
} 
+0

строки SQL, как PHP строк, должны быть в кавычках. Помимо этой проблемы, я не знаю, каков ваш вопрос или проблема. О, и вам нужно получить результаты. Http://php.net/manual/en/mysqli-result.fetch-assoc.php – chris85

+0

Вы вошли в mysql? У вас есть ошибки? –

+0

Вам нужны записи? Откуда появляется '$ searchVar', пользовательский ввод? – chris85

ответ

1

В запросе необходимо разместить одинарные кавычки около $searchVar.

$result = $db->query("SELECT * FROM tablename WHERE ColumnName = '$searchVar'"); 

Затем вы должны получить результаты запроса.

$result = $result->fetch_row(); 
+1

Он еще не задал вопрос, как вы можете получить ответ? – chris85

+0

Итак, если я это сделаю, должен ли остальной код работать? Я попробую это теперь приятель! –

+0

OP заявила, что они хотели бы запросить БД, чтобы увидеть, существует ли запись. Изменения, которые я предложил, должны позволить им сделать это. –

1

Итак, ваш текущий запрос не удался, потому что ваша строка SQL не была в кавычках. Он также мог провалиться после ввода кавычек, если ваша строка PHP содержала в себе одну цитату. Именно так возникают SQL-инъекции, пользовательский ввод никогда не должен передаваться непосредственно в SQL-запрос. Для разделения этих задач есть подготовленные/параметризованные запросы.

Вот код, который, я думаю, должен работать для вас, но это непроверено, основано на руководствах.

$db = new mysqli('IP', 'username', 'password', 'database'); 
$stmt = $db->prepare('SELECT * FROM tablename WHERE ColumnName = ?'); 
$stmt->bind_param('s', $searchVar); 
$stmt->execute(); 
if($stmt->num_rows > 0) { 
    echo 'there are results'; 
} else { 
    echo 'there are no results'; 
} 

Ссылка нитку на предотвращающих инъекций: How can I prevent SQL injection in PHP?

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