1

以下は、HTMLフォームから作成するテーブルのタイトルを取得することです。今のところ、その値をハードコーディングしました...しかし、ハードコーディングされた値を使用しても、次のエラーが発生します。 。データベースに接続しました致命的なエラー:44行目の「filepath」.php内の非オブジェクトに対するメンバー関数execute()の呼び出し

    <?php

            // Configuration
            $hostname = 'host';
            $username = 'user';
            $password = 'pass';
            $database = 'dbname';

            $table = $_Post['table'];
        try {
            $conn = new PDO('mysql:host='. $hostname .';dbname='. $database, $username, $password);
    echo "Connected to database"; // check for connection
    echo $table;
    // We get the connected to database message....
$conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
 // table A is going to be a var , but for now testing with a hardcoded value 
  $sql = "CREATE TABLE tableA (
  id int(8) ,
  Question varchar(170),
  AnswerA varchar(100),
  AnswerB varchar(100),
  AnswerC varchar(100),
  AnswerD varchar(100),
  A int(8),
  B int (8), 
  C int (8) , 
  D int (8)
  ) CHARACTER SET utf8 COLLATE utf8_general_ci";

  $sqlb = "INSERT INTO `DBNAME` tableA (`id`, `Question`, `AnswerA`, `AnswerB`, `AnswerC`, `AnswerD`, `A`, `B`, `C`, `D`) 
  VALUES ('1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 
  ('2', NULL,  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 
  ('3', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
  ('4', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
  ('5', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 
  ('6', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 
  ('7', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
  ('8', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 
  ('9', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
  ('10', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)";
  // lets not do it all at once eh , run a secound script to add in all the values 



 $sql->execute(); 
 $sqlb->execute(); 
 // if($conn->exec($sql) !== false) echo 'The sites table is created';  
//if($conn->exec($sqlb) !== false) echo 'We inserted some values !';  


}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
//  }
// write code to check if we succeded in creating a table with with $, if so display an alert of of some kind
// with Javascript ....

// disabled the redirect so i could see the error message
//header ("Location: quizsubmit.html");
/* Make sure that code below does not get executed when we redirect. */
exit ;



?>
4

4 に答える 4

7

$sqlおよび変数には$sqlb、PHPオブジェクトではなく、文字列が含まれています。彼らには方法がありませんexecute()

最初にクエリを準備する必要があります。次に、結果のステートメントオブジェクトを実行できます。

$stmt = $conn->prepare($sql);
$stmtb = $conn->prepare($sqlb);

$stmt->execute();
$stmtb->execute();
于 2012-07-24T02:19:45.117 に答える
0

文字列を呼び出し->execute()ていますが、どのように機能する必要がありますか?prepare()ステートメントオブジェクトを作成するには、メソッドを使用する必要があります。

于 2012-07-24T02:20:04.503 に答える
0

上記のように、returnを返すprepareを呼び出してPDOStatementから、executeを呼び出すかexec、PDOオブジェクトを呼び出すことができます。1)

$stmt = $conn->prepare($sql);
$stmtb = $conn->prepare($sqlb);

$stmt->execute();
$stmtb->execute();

2)

$pdoObj = new PDO('mysql:host='. $hostname .';dbname='. $database, $username, $password);
$pdoObj->exec($sql);
于 2012-07-24T02:23:30.257 に答える
0

同じエラーが発生しました...

存在しないテーブルを選択していました。私のエラー。

于 2014-06-01T10:22:31.107 に答える