PHP PDO возвращает bool false sorta

Когда я запускаю код и результат дампа var, он дает bool false. Я сделал ошибку при вводе и удерживал Shift и 0 на правой цифровой клавиатуре, в поле ввода отображалось эхо http://продажи/form2.php. Я поддержал его и ввел правильную информацию, и он работает, как и ожидалось. Я не знаю, это код или моя система Ubuntu 18.10

    <?php
/*include ('includes/validation.php');*/
include ('includes/validationmysql.php');



/*$dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);*/
$dbh = new PDO('mysql:host=localhost;dbname=sales', $dbuser, $dbpass);

if (!$dbh) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }

if (isset($_POST["custID"])){
$custID=$_POST["custID"];

 $sql = $dbh->prepare("SELECT CustFirstName, CustLastName, CustAddress, CustCity, CustState, CustZip, CustCellPhone
         FROM customers WHERE custID = '".$custID."'"); 
         $sql->execute();
         $result = $sql->fetch(PDO::FETCH_ASSOC);

var_dump($custID);

var_dump($result);
}
?>

<!DOCTYPE html>
<html>
<head>
<title>Form</title>
</head>

<body>
<h1>Figure It Out</h1>
<form action = "" method = "post">
<p>CustomerID <input  type = "text" name = "custID" value = "<?php  echo $custID; ?> " size = "5"><input type = "submit" name = "submit" value = "submit"></p>

  <textarea>
  <?php
  echo $result['CustFirstName']. ' ' . $result['CustLastName']. "\n";
  echo $result['CustAddress']. "\n";
  echo $result['CustCity']. ' ' . $result['CustState']. ' ' . $result['Custzip']. "\n";
  echo $result['CustCellPhone'];
  ?>
  </textarea>


</form>
</body>
</html>

неясно (по крайней мере мне), в чем именно заключается проблема, в каком сценарии. "и это работает, как ожидалось" - показанный код работает как положено?? Когда вы получаете false для результата тогда?

Jeff 30.03.2019 14:15

ЕСЛИ вы войдете в поле ввода ex;(DAV123) и отправите его, вы получите логическое значение false для результата.

user4727065 30.03.2019 14:30

ЕСЛИ вы войдете в поле ввода ex;(DAV123) и отправите его, вы получите логическое значение false для результата. Я случайно зажал клавишу Shift, когда вводил часть числа 123, которая просто выделяла буквы, когда я отменил ее и снова ввел, она дала правильные результаты. Таким образом, единственный способ, которым это работает правильно, - это если вы удерживаете Shift и нажимаете цифру на цифровой клавиатуре справа. Я пробовал другие комбинации сдвига и чисел вверху, просто пытаясь понять это, но это работает только с числами справа. бьет меня

user4727065 30.03.2019 14:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
44
1

Ответы 1

Вы уязвимы для SQL-инъекций, потому что неправильно используете подготовленные операторы.

$sql = $dbh->prepare("SELECT CustFirstName, CustLastName, CustAddress, CustCity, CustState, CustZip, CustCellPhone 
                      FROM customers WHERE custID = '".$custID."'"); 
$sql->execute();
$result = $sql->fetch(PDO::FETCH_ASSOC);

следует читать следующим образом:

$sql = $dbh->prepare("SELECT CustFirstName, CustLastName, CustAddress, CustCity, CustState, CustZip, CustCellPhone 
                      FROM customers WHERE custID = ? "); 
$sql->execute([$custID]);
$result = $sql->fetch(PDO::FETCH_ASSOC);

Спасибо, что обратили на это мое внимание

user4727065 30.03.2019 14:54

Другие вопросы по теме