Невозможно выполнить поиск запросов в таблице MySQL

Я хочу искать запрос в таблице MySQL, называемой «ключи» на основе ключа, а затем возвращать другие значения для этого запроса. (например, «id»)

Вот как выглядит мой стол:

id key customer 88633631 gNjp4CW6E/VfdBqli6zBLw== Name1 41317488 bi74frT3LFGTRkvoW7B31Q== Name2 

.. и вот как выглядит мой PHP-код:

 <?php require 'config.inc.php'; /* Declare variables */ $key = $_GET["key"]; $id = ""; $customer = ""; /* Connect to database and grab the keys */ @mysql_connect($g_mysql_host,$g_mysql_usr,$g_mysql_pass) or die("Couldn't connect to database server"); @mysql_selectdb($g_mysql_db) or die("Couldn't select database"); $query = "SELECT * FROM `keys` WHERE `key` = $key"; $result = mysql_query($query); if (!$result) exit("INVALID KEY"); else { while ($row = mysql_fetch_array($result)) { echo $row['id']; } } ?> 

Но это не работает. Я думаю, что проблема вызвана 2 равными в конце ключа, но я не уверен. Если я хочу искать «id», а затем распечатать «ключ» найденного «id», он работает.

Я не хочу удалять 2 равных в конце, потому что они связаны с дополнением AES128.

На самом деле проблема не вызвана 2 равными в конце ключа. Он вызван символом «+» внутри строки, но если я его удалю, я не могу расшифровать зашифрованный текст AES128.

Related of "Невозможно выполнить поиск запросов в таблице MySQL"

Есть несколько ошибок в том, как вы это делаете.

Во-первых, вы не указываете свое значение: '$key'

 $query = "SELECT * FROM `keys` WHERE `key` = '$key'"; 

Во-вторых, ваш код широко открыт для SQL-инъекций. Устраните свое значение:

 $key = mysql_real_escape_string($_GET["key"]); 

Указанный выше код является абсолютным минимумом, который вам нужно сделать.
Следующее, что функции mysql_ устарели долгое время и были удалены в PHP 7.

Вам нужно переключиться на mysqli_ или PDO . Чем скорее вы переключитесь, тем лучше. Пожалуйста, прочитайте этот вопрос для получения дополнительной информации: Как я могу предотвратить SQL-инъекцию в PHP?

Помимо всех вышеперечисленных проблем, вы сэкономите себя (и тем более других, если они когда-либо будут читать ваш код), какую-то головную боль, если вы никогда не используете ключевые слова и зарезервированные слова в качестве имен таблиц или столбцов, как Jay Blanchard отметил.

как насчет того, измените ли вы следующую строку

 $query = "SELECT * FROM `keys` WHERE `key` = $key"; 

в

 $query = "SELECT * FROM `keys` WHERE `key` = '".$key."' "; 

Это происходит потому, что вы не избежали ввода, который должен быть

 "SELECT * FROM `keys` WHERE `key` = '$key'" 

но в любом случае это не лучший способ сделать это, вы должны использовать подготовленный оператор и обертку, такую ​​как PDO

Что-то вроде этого

 $stmt = $db->prepare('SELECT * FROM `keys` WHERE `key` = :key'); $stmt->bindValue(":key", $_GET["key"]); if ($stmt->execute()) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row['id']; } }