Синтаксическая ошибка SQL / Запрос

#php #mysql #html #sql

#php #mysql #HTML #sql

Вопрос:

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ‘% $ _GET [«urlsearch»]’ в строке 1

Я не уверен, что я делаю неправильно. Любой совет?

Попытка выполнить поиск по URL-адресу в моей базе данных (столбец данных URL) и посмотреть, есть ли он там или нет.

 <form method="GET" onSubmit=""><input type="text" name"urlsearch" id="SearchURL" /><input type="submit" value="Search" /></form>
<?php
$hostname = *
$username = *
$password = *
mysql_connect($hostname, $username, $password) or die(mysql_error());
mysql_select_db("tracker") or die("Unable to select database");
$query = 'SELECT URL FROM tracker.Data WHERE URL LIKE %$_GET["urlsearch"]';
$results = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_row($results) or die(mysql_error());
echo "<b>[$row] </b>";
  

?>

Комментарии:

1. Код на 100% открыт для SQL-инъекций и CSRF .

2. Я не думаю, что комментарий quantumSoup мог когда-либо получить достаточное количество голосов 1 комментарий.

3. Будем надеяться, что ваш urlsearch не содержит значения типа ' OR 1=1; DROP TABLE tracker.Data; UPDATE Emp SET Salary=0; --

4. Реальным ответом было бы включить OP в ca.php.net/manual/en/language.variables.basics.php

Ответ №1:

В таком запросе, если вы попытаетесь выполнить «поиск» (используя $_GET[«urlsearch»]) и поместите странный символ, например, одинарную кавычку в данном случае, это перестанет вызывать ошибку.

Это может быть использовано (SQL-инъекция).

Используйте mysql_real_escape_string() (и / или некоторые другие функции), чтобы предотвратить это.

Ответ №2:

Изменить:

 $query = 'SELECT URL FROM tracker.Data WHERE URL LIKE %$_GET["urlsearch"]';
  

Для:

 $query = 'SELECT URL FROM tracker.Data WHERE URL LIKE "%'.$_GET["urlsearch"].'"';
  

Ответ №3:

Попробуйте,

 $query = "SELECT `URL` FROM `tracker.Data` WHERE `URL` LIKE '%$_GET[urlsearch]'";
  

Комментарии:

1. $_GET[urlsearch] все равно не будет распознан.

Ответ №4:

 if (isset($_GET["urlsearch"])) {
  $search = mysql_real_escape_string($_GET["urlsearch"]);
  $query = "SELECT URL FROM tracker.Data WHERE URL LIKE '%$search'";
  $results = mysql_query($query) or die(mysql_error());
  $row = mysql_fetch_row($results);
  echo "<b>[$row] </b>";
}
  

Ответ №5:

если выше не работает, попробуйте следующее:

 $query = "SELECT `URL` FROM `tracker.Data` WHERE `URL` LIKE".%$_GET[urlsearch];