1

こんにちは、小さな問題があります..私は PDO を初めて使用し、自分の Web サイトに実装したいと考えています。次のコードがあります。

foreach($liga1 as $item) {
$data = $item->get_date('j M Y, g:i a');
$titlu = $item->get_title();
$link = $item->get_permalink();
$text = $item->get_description();
$cat = "Liga 1";

$dbhost     = "localhost";
$dbname     = "site";
$dbuser     = "root";
$dbpass     = "root";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$sql = "INSERT INTO stiri ('id','data', 'continut', 'link', 'titlu', 'categorie' ) VALUES (:data, :text, :link, :titlu, :categorie)";
$q = $conn->prepare($sql);
$q->execute(array(':data', $data,
                ':continut', $text,
                ':link', $link,
                ':titlu', $titlu,
                ':categorie', $cat));
}

このコードを実行すると、次のエラーが発生します。

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\xampp\htdocs\ice\sql\sport2.php on line 50

ご覧のとおり、入力した特定のカテゴリをデータベースに挿入したいのですが、PDOを使用して挿入する方法がわからない「id」がmysqlテーブルにあります。20ページ以上に同じコードを配置する必要があるため、ここでもクラスを使用したくありません。

4

2 に答える 2

1

:text がありません。別のパラメーターを追加する必要があります。contuit という名前を付け、pdo に :text を期待するように指示しました

于 2013-03-01T00:37:34.923 に答える
1

問題は、5 つの列を定義しているのに、4 つの値しか指定していないことです。列名IDが ed column として設定されている場合AUTO_INCREMENT、列リストから省略できます。

INSERT INTO stiri (data, continut, link, titlu, categorie ) VALUES (...) 

すぐにエラーが発生するもう 1 つの理由は、列名を一重引用符で囲んでいることです。列名を文字列に変換するため、クエリが失敗しました。問題を解決するには、それらを囲む一重引用符を削除します。

INSERT INTO stiri (id,data, continut, link, titlu, categorie ) VALUES (...)

更新 1

$sql = "INSERT INTO stiri (data, continut, link, titlu, categorie) VALUES (?, ?, ?, ?, ?)";
$q = $conn->prepare($sql);
$q->bindParam(1, $data);
$q->bindParam(2, $text);
$q->bindParam(3, $link);
$q->bindParam(4, $titlu);
$q->bindParam(5, $cat);
$q->execute();
于 2013-03-01T00:18:03.043 に答える