mysql — ошибка запроса при доступе к базе данных clearDB с использованием php на Heroku

Я могу получить доступ к базе данных clearDB с помощью Mysql Workbench.

Но когда я запрашиваю базу данных, используя php на Heroku, она всегда дает сбой.

Это мой код:

$url=parse_url(getenv("CLEARDB_DATABASE_URL"));

$dbhost = $url["host"];
$dbuser = $url["user"];
$dbpass = $url["pass"];
$dbname = substr($url["path"],1);

mysqli_connect($dbhost, $dbuser, $dbpass);

mysqli_select_db($dbname);

$sql = "SELECT * FROM `user_info` WHERE `user_account`='".$user_account."'";

$result = mysqli_query($sql) or die('MySQL query error');

user_account — таблица в базе данных, $ user_account — входная переменная от пользователя клиента

Помоги мне
Спасибо

2

Решение

Вы не передаете ссылку на mysqli_query(), Вам нужно либо сделать это, либо использовать объектно-ориентированный стиль и вызвать query() на связи.

У вас также есть возможная инъекция SQL там, потому что $user_account может содержатьfoo' OR 1 OR '«, возвращая все строки (и это просто, не очень злой случай), так что вы должны избежать этого, используя mysqli_real_escape_string()или, что еще лучше, используйте подготовленные заявления.

Наконец, вместо or die()как насчет правильного извлечения информации об ошибках или даже настройки mysqli для выдачи исключений?

<?php
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));

$server = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$db = substr($url["path"], 1);

$conn = new mysqli($server, $username, $password, $db);

$sql = "SELECT * FROM `user_info` WHERE `user_account`='".$conn->real_escape_string($user_account)."'";

if($result = $conn->query($sql)) {
foreach($result as $row) {
// ...
}
} else {
throw new Exception($conn->error);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]