0

ここのユーザーからの提案のおかげで、コードを PDO に移植し始めました。1 つの小さな問題が発生するまで、すべてが順調に進んでいました。

データベース呼び出しを処理する小さな関数があります。これは基本的に SQL クエリを生成し、$dbh->prepare ($sql) を実行し、ループして値をバインドし、クエリを実行します。

$sth = $dbh->prepare ($sql);
// bind parameters
if ($action == 'insert' || $action == 'update') {
    reset ($array);
    foreach ($array as $key => &$value) {
        if ($value != 'NOW()') {
            $sth->bindParam (':' . $key, $value);
        }
    }
}
$sth->execute();

「0」の値を挿入する必要があるまで、これは正常に機能します。エラーは返されませんが、データベースに挿入される値は、テーブル内の列タイプの最大値 (この場合は "137") であることがわかります。

これをよりよく理解できるように、誰かが私に修正を与えるだけでなく、何が起こっているのかを説明し、解決策を提供してくれることを望みます.

乾杯、ルーク

4

1 に答える 1

1

パラメータを正しくバインドしていません。マニュアルを確認してください。
以下を使用する必要があります。

$sth->bindParam (':' . $value, [PARAM TYPE - example: PDO::PARAM_INT]);
于 2012-07-19T19:53:35.017 に答える