MySQL Query всегда возвращает только «1» в службе приложений Azure + сервер базы данных Azure

В настоящее время я кодирую с помощью службы приложений Azure и сервера базы данных Azure для MySQL.

Когда выполняется инструкция «select», возвращается только «1».

Я не думаю, что это проблема с подключением, потому что оператор insert работает нормально.

Это мой PHP-код, работающий в службе приложений Azure.

error_reporting(E_ALL); 
ini_set('display_errors',1); 
include('dbconnectr.php'); 

$id = $_GET['id'];
$stmt = $con->prepare('select * from contents where id='.$id);
$stmt->execute();
$result = $stmt->fetch();
echo $result; 

В чем проблема?


person 최정태    schedule 19.03.2021    source источник
comment
предупреждение - ваш код уязвим для атак с использованием sql-инъекций!   -  person Daniel A. White    schedule 19.03.2021
comment
Если это mysqli, fetch() возвращает логическое значение, и вам нужно использовать $stmt->bind_result(), чтобы указать переменные, которые получают выбранные столбцы.   -  person Barmar    schedule 19.03.2021
comment
Что вы ждете от эха вместо этого? В PDO fetch() возвращает массив, вы не можете повторить это.   -  person Barmar    schedule 19.03.2021


Ответы (1)


Этот скрипт поможет вам

error_reporting(E_ALL); 
ini_set('display_errors',1); 
include('dbconnectr.php'); 

$id = $_GET['id'];

$stmt = $con->prepare("select * from contents where id=?");

/* bind parameters */
$stmt->bind_param("i", $id);

/* execute query */
$stmt->execute();

/* bind result variables */
$stmt->bind_result($result);

/* fetch value */
$stmt->fetch();

print_r($result);

Я использую привязку для защиты от sql-инъекции.
Итак, я использую bind_param для привязки параметра, затем использую execute для выполнения команды, а затем привязываю результат к bind_result, а после этого использую выборку и заполняю переменную результата и Готово

person azibom    schedule 19.03.2021
comment
спасибо, работает хорошо! - person 최정태; 20.03.2021