2010-12-12 35 views
0

私はPDO + MySQLを使用して基本的なプリペアドステートメントをやろうとしている..私は私の人生のために割り当てられた値を取得することができないように準備しました? ありがとうございます!PHP PDO Basicは声明

表の結果:

mysql> select * from users; 
+--------+----------+-----------+---------------+-------------+---------+---------------------+----------+------------+---------+------+ 
| userId | userName | userPass | accountStatus | accountType | balance | tCreated   | tUpdated | tLastLogin | promoId | ref | 
+--------+----------+-----------+---------------+-------------+---------+---------------------+----------+------------+---------+------+ 
|  1 | :a  | :userPass | unconfirmed | user  |  0 | 2010-12-12 13:42:10 |  NULL |  NULL | NULL | NULL | 
+--------+----------+-----------+---------------+-------------+---------+---------------------+----------+------------+---------+------+ 
+0

なぜ必要なのですか? –

+0

@Col OPは質問を単純化したと思う。たぶん値は既知の定数ではありません。 – Phil

答えて

2

SQLステートメント内の変数は、引用符「... ':a' ..」で囲んでいます。パーサーは変数ではなく、ここで文字列を意味すると思うので、それらを削除してください。データベースに、bind()呼び出しの文字列を意味すると伝えます。

+0

そうです、 /私は赤い牛を開けて亀裂:P –

0

var_dumpは、あなたが期待するものであるように思わ123で置換:testでクエリを示してはなりません。 $sth->execute();に電話してください。

理由は、準備文がどのように機能するかと関係があります。クエリが実行されると、クエリはデータベースに文字列として送信されます。ここではそれを内部形式に解析し、それをインタプリタで実行します。準備されたステートメントでは、変数の値(例えば、は:test)は、クエリとは別に送信され、解析されます。これは、値が決してクエリの一部ではなくパーサーに決して到達しないという理由だけで、パーサーを攻撃することはできないということです。

+0

返信ありがとうございます.. –

+0

説明をありがとうが、問題は、データが置換されずにパラメータを示すので、データベースにデータを作成していないということです。私は2台のサーバでテストしましたが、この時点で何が原因であるのか分かりません。どんなアイデアでも大変感謝しています:) –