使用准备好的语句将mySQLi SELECT查询转换为PDO时出现问题

时间:2019-07-10 20:31:25

标签: php mysql mysqli pdo

如何使用PDO重写以下简单的% mySQL PHP脚本,在PDO中编写带有需要POST请求输入的准备好的语句。

-1rem

PDO中的输出必须遵循显示

的相同原理

SELECT

如果找到记录并且

<?php

    // Create connection
$con=mysqli_connect("localhost","username","password","dbname");

// Check connection
if (mysqli_connect_errno())

{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$FieldInput = $_POST['FieldInput'];

$return = ['error' => false];

$sql =  "SELECT Field1, Field2
        from Table1 WHERE (Field3 = '$FieldInput')";


$result = mysqli_query($con, $sql);
if($result && $result->num_rows > 0){
    $return['error'] = true;
}
mysqli_close($con);
echo json_encode($return);

?>

如果找不到记录。

这是我到目前为止尝试过的:

我认为WHERE子句的语法不正确,因为POST的输入永远不会到达查询

{"error":true}

1 个答案:

答案 0 :(得分:-1)

这就是您要寻找的

<?php

// Create connection
$con=mysqli_connect("localhost","username","password","dbname");

// Check connection
if (mysqli_connect_errno())

{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$return = ['error' => false];
$query = 'SELECT Field1, Field2
    from Table1 WHERE (Field3 =?)';
$stmt = $con->prepare($query);
$stmt->bind_param("s", $fieldinput);
$fieldinput = $_POST['FieldInput'];
if ($stmt->execute()) {
   if ($stmt->rowCount() > 0) {
     $return['error'] = true;
   }    
 }
 $stmt->close();
 mysqli_close($con);
 echo json_encode($return);
 ?>

以防万一,您需要所有行

 while ($row = $stmt->fetch()) {
   print_r($row);
 }