0

mysql_query を準備済みステートメントに変換しようとしていますが、黙って失敗し、どこが間違っているのかわかりません。フォームの proc.php ページは次のとおりです。

$db = new PDO('mysql:host=XXX;dbname=XXX;charset=utf8', 'XXX', 'XXX');

if ($_POST['submit']) {
    $type = $_POST['type'];
    $auth1_lname = trim($_POST['auth1_lname']);
    $auth1_fname = trim($_POST['auth1_fname']);
    $today =  date("Y-m-d"); 

$stmt = $db->prepare("INSERT INTO table_base ( type , publ_date , auth1_lname , auth1_fname ) 
        VALUES (:type, :today, :auth1_lname , :auth1_fname) ");
    $stmt->bindParam(':type', $type);
    $stmt->bindParam(':today', $today);
    $stmt->bindParam(':auth1_lname', $auth1_lname);
    $stmt->bindParam(':auth1_fname', $auth1_fname);
    $stmt->execute();

    $bid = $db->lastInsertId();

    $subj_area = $_POST['subj_area'];
    $subject = 'subj_area';
    $subjs = '';

$stmt = $db->prepare("INSERT INTO table_meta (bid, key, value) VALUES (:bid, :key, :value)");
    $stmt->bindParam(':bid', $bid);
    $stmt->bindParam(':key', $subject);
    $stmt->bindParam(':value', $subjs, PDO::PARAM_STR);
    foreach($subj_area as $subjs) {
       $stmt->execute();
    }

    $geo_area = $_POST['geo_area'];
    $geograph = 'geo_area';
    $geos = '';

$stmt = $db->prepare("INSERT INTO table_meta (bid, key, value) VALUES (:bid, :key, :value)");
    $stmt->bindParam(':bid', $bid);
    $stmt->bindParam(':key', $geograph);
    $stmt->bindParam(':value', $geos, PDO::PARAM_STR);
    foreach($geo_area as $geos) {
       $stmt->execute();
    }
}   
  1. 私はこれを正しく行っているかどうかさえわかりません。
  2. SO の他の場所で、PDO を使用するには PHP がこの高さでなければならないというコメントを目にしますが、PDO に関する php.net のページには PHP の要件が記載されていません。PHP5 ホストに適切なドライバーがないために失敗していますか?
  3. die(mysql_error()) を追加して、少なくともサイレントエラーにならないようにする方法はありますか?
4

0 に答える 0