0

このヒットカウンターをpdoで動作させようとしていますが、解析エラーが発生し続けます。

構文エラー、予期しない'('、37行目の識別子(T_STRING)または変数(T_VARIABLE)または'{'または'$'が必要です。

私のデータベースの名前は、テーブルカウンターとcounterという列を持つgroup2であるため、インデックスかどうかはわかりません。私もmysql手続き型メソッドを使用してみましたが、どちらにも精通しておらず、使用したすべてのガイドでこれらのエラーが発生しています。私は何を間違っているのですか。

*新しいコードを編集:

<?php
try
{
$dsn = "mysql:host=xxxxxxxxxxxxxx"; // Missing semi colon (;)
$conn = new PDO($dsn,'group2', 'xxxxxxxxxxxx');  //connection
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOexception $e)
{
Print($e->getMessage());
Exit;
}


$sql = ("SELECT * FROM counter");
$conn->query($sql);
$row = $conn->query($sql);
$counter =$row['counter'];

if(empty($counter))
{

$counter = 1; 
$insert = $conn->query("INSERT INTO counter VALUES('$counter')");  
}

$add= $counter+1;
$insertNew = $conn->("UPDATE counter SET counter = '$add'"); 
echo $counter;

?>


<?php $conn = null; ?>
4

1 に答える 1

1

あなたのコードには多くの間違いがあります。

  1. 機能はありませんmysqle_select_db()。と呼ばれるものがありmysql_select_db()ますが、PDO を使用しているので、おそらく を使用したいと思うでしょう$conn->query('use group2')
  2. まだ設定されていない変数を使用してクエリを実行しています。$conn->query($sql);さらに 2 行下では機能しません。
  3. 角かっこは、テーブル名では無効であり+、有効なクエリ列でもありません。SELECT + FROM counter[counter]うまくいきません。あなたはおそらくそうするつもりSELECT * FROM counterでした。
  4. あなたのクエリは何も返しませんが、列を返さないと確信していcounter[counter]ます。あなたはおそらく$counter=$row['counter'];そうするつもりでした(はい、MySQLをだまして列名に角括弧を使用させることができますが、それはおそらくここで意図したものではありません)
  5. 最後になりましたが、UPDATE クエリは 2 回 (PDO を使用して 1 回、mysql_* ライブラリを使用して 1 回) 発行されるだけでなく、間違っています。テーブルに列がある$insertNew = $conn->("UPDATE counter SET counter = '$add'");と仮定すると、おそらく と表示されるはずです。countercounter

編集:

いくつかの細かい点があれば、スクリプトは問題ないように見えます。

  1. おそらく、データベースのパスワードを投稿するべきではありません。
  2. データベース クエリの 1 つがあまり機能していません: $conn->query($sql);- 次の行でもう一度実行します。
  3. 挿入後に更新しているため、カウンターは1ではなく2で始まります(UPDATEはステートメントのelse一部ではないifため、すべての場合に実行されます)

それでもうまくいかない場合は、コードに echo/print_r/var_dump ステートメントを挿入して、コードが壊れている場所を確認してください。

print_r($conn->errorInfo());PDO内のエラーに関する情報を提供します。 echo "$counter";選択した結果が表示されます。

print_r($conn->errorInfo());

于 2013-03-17T21:51:57.223 に答える