#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];