0

私はデータベースの操作に非常に慣れていません。これを数日間調査しましたが、無効なパラメーター番号を取得できませんでした。PHP 5.2を使用してMySQL 5.1データベースに2つのデータを取得しようとするだけで、コードとオプションを削減しました。データベースへの接続は良好で、echoステートメントに基づいて、準備ステートメントに問題がないと確信しています。

完全なコードは以下のとおりです

 $DBHandle= new PDO('mysql:localhost;dbname=nameishere','userishere','passishere');

//* $DBHandle->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); --for USE
//* below is what I am currently using for debugging

$DBHandle->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

//*next bit is to insure that if connection is lost database is not partially updated-I think- right now commented out
//* $DBHandle->beginTransaction();


    $mainIncrement= NULL;
    $firstnameOBS= $_POST['touristfirstname'];
    $todaysdateOBS= $_POST['touristdatetoday'];
    //*$picturenow= $_POST['picturesubmitted'];

    $JSONfirstname = json_encode($firstnameOBS);
    $JSONtodaysdate = json_encode($todaysdateOBS);
    //*$JSONpicturenow = json_encode($picturenow);

    echo ($JSONfirstname);


    $senditin = $DBHandle->prepare("INSERT INTO 'fkarnd'('firstname','datetoday') VALUES(:field1,:field2)", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

    $senditin->bindValue(':firstname', $JSONfirstname, PDO::PARAM_STR);
    $senditin->bindValue(':datetoday', $JSONtodaysdate, PDO::PARAM_STR);

    //* $myinputarray = array('firstname'=> $JSONfirstname, 'datetoday' => $JSONtodaysdate );

    $senditin->execute();


    //* commit allows transaction begun to complete
    //* $DBHandle->commit();



  //*  catch ( PDOException $e ) 
     echo "I'm sorry, I can't do that Dave......";
  //*file_put_contents( 'dbErrors.txt', $e->getMessage(),FILE_APPEND);  


  //*  echo "successful submission for the preservation of JohnsPass";
    $DBHandle = null;

データを配列に入れてから実行しようとしましたINPUT ()INTO table WHERE().... 束縛なしでやってみました。私は実際に、作成した HTML5 フォームからデータベースにデータを入れようとしています。フォーム データは、echo ステートメントに基づいて問題なく送信されます。PHP の例のほとんどは、INPUT ではなく SELECT を処理しているようです。

以下は出力と私が理解できないエラーです

"Dread"
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/mabelsbi/public_html/johnspass.org/Science/FirstTry.php on line 46

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number in /home/mabelsbi/public_html/johnspass.org/Science/FirstTry.php on line 46
4

1 に答える 1

0
$senditin = $DBHandle->prepare("INSERT INTO 'fkarnd'('firstname','datetoday') VALUES(:field1,:field2)", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

$senditin->bindValue(':firstname', $JSONfirstname, PDO::PARAM_STR);
$senditin->bindValue(':datetoday', $JSONtodaysdate, PDO::PARAM_STR);

クエリで and を使用してから、パラメータとして and を設定:field1しています。設定内容に一貫性を持たせる必要があります。:field2:firstname:datetoday

$senditin = $DBHandle->prepare("INSERT INTO `fkarnd` (`firstname`,`datetoday`) VALUES(:firstname,:datetoday)", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

$senditin->bindValue(':firstname', $JSONfirstname, PDO::PARAM_STR);
$senditin->bindValue(':datetoday', $JSONtodaysdate, PDO::PARAM_STR);

(フィールド名とテーブル名の前後に SQL でバッククォートを使用するように編集)

于 2012-10-25T16:09:23.663 に答える