使用PHP PDO Prepared语句插入数据时,如果语句不起作用

时间:2017-06-21 08:36:31

标签: php mysql pdo

这是我的代码:

<?php

$salary = 0;

try {


    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO TABLE (firstname, salary) 
    VALUES (:firstname, :salary)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':salary', $salary);

    // insert a row

    $firstname = "John";
  if ( $respond["salary"] != 0)
    $salary= $response["salary"];
    $stmt->execute();

    echo "New records created successfully";
    }

?>

这只是必需的代码。在完整的代码中,我使用while循环检索5-10个JSON文件。

我得到$response["salary"] from a JSON file,但如果JSON文件中的工资为空,我将该值设为0.因此它不存储以前的JSON文件的值。

但这里发生的是:

如果JSON文件中的工资为空,那么我给$ salary变量0值。

因此,根据IF声明,不必存储工资值,因为工资= 0.但它仍然在数据库中存储0。怎么解决?

1 个答案:

答案 0 :(得分:0)

我的假设是您在IF声明中调用了错误的查询。

这是我的看法:

$salary  = 0;

$stmt = $this->conn->prepare("INSERT INTO `table` (`firstname`,`salary`) VALUES (?,?)");


if (!empty($response['salary']) && $response['salary'] != 0)
{
    $salary = $response['salary'];
    $stmt->execute([$firstname, $salary]);

    echo 'New record created successfully';
} else {
    echo 'error!';
}

我唯一的其他建议是var_dump($respond)然后var_dump($response),看看你应该实际呼叫哪一个......