PHP PDO возвращает bool false sorta - PullRequest
0 голосов
/ 30 марта 2019

Когда я запускаю код и результат дампа var, это дает bool false.Я сделал ошибку, набрав и удерживая клавиши Shift и 0 на правой цифровой клавиатуре, она повторила http://sales/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>

1 Ответ

1 голос
/ 30 марта 2019

Вы уязвимы для 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...