带有消息'SQLSTATE [HY093]的未捕获异常'PDOException'。我不明白什么是错的

时间:2016-06-07 20:21:37

标签: php pdo

后端部分:

var {DeviceEventEmitter} = require('react-native')
var dismissKeyboard = require('react-native-dismiss-keyboard')

DeviceEventEmitter.addListener('keyboardDidHide', dismissKeyboard)

前端:

$producttitle = $_POST['product-title'];
$price = $_POST['price'];
$category = $_POST['Category'];
$file = $_FILE['file_upload'];
$description = $_POST['description'];

$adq = "INSERT INTO Advertenties (Titel, Prijs, Categorie, Image, Beschrijving) VALUES (:product-title, :price, :category, :file_upload, :description);";

$query = $GLOBALS['$odb']->prepare($adq);


$results = $query->execute(array(       
    ":product-title" => $producttitle,
    ":price" => $price,
    ":category" => $category,
    ":file_upload" => $file,
    ":description" => $description
    ));

所以,这是我上面的代码。这是出于某种原因给我一个错误,但我不能解释为什么。我在互联网上搜索过,我所能找到的东西都与某些东西不相符。我已经经历过这么多次了,它现在开始惹恼我了。

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

尝试用:product-title

替换:product_title

答案 1 :(得分:1)

如果有疑问,请将查询分成尽可能多的行,以便您可以狙击问题,而不是让MySQL始终在第1行报告错误:

打开

$adq = "INSERT INTO Advertenties (Titel, Prijs, Categorie, Image, Beschrijving) VALUES (:product-title, :price, :category, :file_upload, :description);";

$adq = "INSERT INTO Advertenties
        (Titel,
        Prijs,
        Categorie,
        Image,
        Beschrijving)
        VALUES
        (:product-title,
        :price,
        :category,
        :file_upload,
        :description);";

此外,:product-title是一个有效的占位符吗?

答案 2 :(得分:1)

除了sql占位符名称问题,您还有多个OTHER错误:

字段名称区分大小写:

$category = $_POST['Category'];
                    ^---
<input class="form-control" type="" name="category"/><br>
                                          ^----

$ _ FILES是一个数组数组:

$file = $_FILE['file_upload'];
":file_upload" => $file,

您无法将数组绑定到查询占位符。不知道你在这里想做什么 - 插入实际的文件内容,或只是文件的名称?无论哪种方式,它应该像

":file_upload" => $file['tmp_name'],

只从数组中绑定一个特定值。

答案 3 :(得分:0)

而不是将数组作为执行函数的参数,您应该使用bindValue分别绑定所有值。如果将它们作为参数传递,则每个值都将被视为一个字符串,使用bindValue可以保持变量的类型。代码看起来像这样:

$adq = "INSERT INTO Advertenties (Titel, Prijs, Categorie, Image, Beschrijving) VALUES (:product-title, :price, :category, :file_upload, :description);";
$query = $GLOBALS['$odb']->prepare($adq);
$query->bindValue(":product-title", $producttitle);
$query->bindValue(":price", $price);
$query->bindValue(":category", $category);
$query->bindValue(":file_upload", $file);
$query->bindValue(":description", $description);
$result = $query->execute();

我希望这会有所帮助。

成功gewenst

答案 4 :(得分:0)

看起来你有$ category = $ _POST [&#39; 类别&#39;];当你发送&#39;类别&#39;。这导致了未定义的索引。小写c。与Alex一起回答,你应该很好

相关问题