0

コマンドラインからこれを実行するときの現在のエラーは、変数$ orderPOの問題であることがわかった、「非オブジェクトでのメンバー関数bindParam()の呼び出し」です。数字以外の文字が気に入らないため、bindParamPARAM_STRビジネスも機能しません。データベースフィールドは両方ともvarchar50です。

私の検索スキルは私を失敗させています。これは約100万回投稿する必要があることは知っていますが、見つからないようです。誰かがより良いアイデアを持っているなら、私はこれを別の方法で行うことに完全にオープンです。

現在の試行コード:

try
{
    $orderNum = '123456';
    $orderPO = '123456-A';


    $dbh = new PDO("mysql:host=localhost;dbname=dbname", 'someuser', 'somepass');
    $stm = $dbh->prepare("insert into some_table (order_number, order_po)");
    $stm->bindParam(':order_number', $orderNum, PDO::PARAM_STR);
    $stm->bindParam(':order_po', $orderPO, PDO::PARAM_STR);
    $stm->execute();
    print_r($stm);
    print_r($dbh);
    $arr = $stm->errorInfo();
    print_r($arr);
    $stm->closeCursor();
    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
4

3 に答える 3

2

PDOを使用してパラメーターをバインドするには、次のようなプレースホルダーを使用する必要があります。

$stm = $dbh->prepare("
    INSERT INTO `some_table` SET
        `order_number` = :order_number,
        `order_po` = :order_po
");
$stm->bindParam(':order_number', $orderNum, PDO::PARAM_STR);
$stm->bindParam(':order_po', $orderPO, PDO::PARAM_STR);

:名前付きプレースホルダーの前に文字が含まれていることに注意してください。また、クエリに列名を追加しました。

さらに読み、例を参照してください:PDO bindParam

于 2012-06-21T16:24:44.177 に答える
0

正しい構文は次のとおりです。

$stm = $dbh->prepare("insert into some_table (order_number, order_po) VALUES (?, ?)");
$stm->bindParam(1,$orderNum);
$stm->bindParam(2,$orderPO);

疑問符を含めます。bindParam呼び出しの番号は、パラメーターをバインドする疑問符を示します。

于 2012-06-21T16:23:53.313 に答える
0

bindparamを使用しようとしていますが、bind paramが一致しますか?カーソルではありません:。パラメータまたは値を含めていません。

また、クエリ内にVALUESステートメントがないため、クエリが失敗します。これが、「非オブジェクトでのメンバー関数bindParam()の呼び出し」を取得する理由です。

:value構文を使用するには、bindParamではなくbindValueを使用します。bindParamを使用するには、:valueを?に切り替えます。クエリでそれらに番号を付けて、実行配列にします。

try
{

    $orderNum = '123456';
    $orderPO = '123456-A';


    $dbh = new PDO("mysql:host=localhost;dbname=dbname", 'someuser', 'somepass');
    $stm = $dbh->prepare("insert into some_table (order_number, order_po) VALUES (:order_number, :order_po)");
    $stm->bindvalue(':order_number', $orderNum, PDO::PARAM_STR);
    $stm->bindvalue(':order_po', $orderPO, PDO::PARAM_STR);
    $stm->execute();
    print_r($stm);
    print_r($dbh);
    $arr = $stm->errorInfo();
    print_r($arr);
    $stm->closeCursor();
    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
于 2012-06-21T16:24:34.400 に答える