-1

私は PDO を使用するのが初めてで、何が問題なのかわかりません。Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, Expect T_STRING or T_VARIABLE or T_NUM_STRING on line 3 というエラーが表示されます。

<?php
include 'dbconnect.php';
$sql = "INSERT INTO event (name,location,admission,map,additional,featured,description)    VALUES (:name,:location,:admission,:map,:additional,:featured,:description)";
$q = $conn->prepare($sql);
$q->execute(array(':name'=>$_POST['name'],
      ':location'=>$_POST['location'],
      ':admission'=>$_POST['addmission'],
      ':map'=>$_POST['map'],
      ':additional'=>$_POST['additional'],
      ':featured'=>$_POST['featured'],
      ':description'=>$_POST['description']));
?>
4

2 に答える 2

1

$_POSTこれらすべての変数から二重引用符を削除します。それらを引用する必要はありません。実際、それらの配列キーも引用すると害が生じます。

$name= $_POST['name'];
$location =  $_POST['location'];
$admission =    $_POST['admission'];
$map =   $_POST['map'];
$additional  =  $_POST['additional'];
$featured  =  $_POST['feature'];
$description =   $_POST['description'];

二重引用符で囲まれた文字列内で配列キーを参照する場合は、キーを引用符で囲んだり、全体を で囲んだりしてはなりません{}。しかし、ここではどちらも必要ありません。

echo "In a double quoted string, you can use $array[keys] unquoted, or surround quoted {$array['keys']} in {}";
// But this is a syntax error! (like you are getting)
echo "Don't quote the $array['keys'] if inside a double quote string, not wrapped in {}";

実際、それらを変数に割り当てる必要はまったくありません。呼び出し$_POSTで入力を直接使用するだけです。execute()

$q->execute(array(':name'=>$_POST['name'],
          ':location'=>$_POST['location'],
          ':admission'=>$_POST['addmission'],
          ':map'=>$_POST['map'],
          ':additional'=>$_POST['additional'],
          ':featured'=>$_POST['featured'],
          ':description'=>$_POST['description']));
于 2012-12-11T03:04:14.453 に答える
0

エラーは、$_POST変数の前後に二重引用符が使用されていることを示している可能性があります。

エラーは3行目の構文であり、この質問のタイトルとは関係がないようです。

$name = $_POST['name'];

PDOに関しては、質問にPDO関連のコードが表示されていないため、含まれているdbconnect.phpファイルにそのようなコードが含まれている必要があります。

于 2012-12-11T03:13:34.423 に答える