今日、バグに対処しているときに、非常に奇妙な問題を発見しました。特定の操作を実行すると、「無効なパラメーター番号: パラメーターがバインドされていません」というメッセージが表示されます。ただし、この問題はローカルまたはテスト マシンでは再現されていないと思います。バージョンに関連しているので、グーグルで検索したところ、 http://forum.typecho.org/topic.php?id=1501 を見つけました。記事の 2 階には、問題はバージョンのバグであると記載されています。php5.2.9 より下の PDO では、現れる。そこで、チーム内の別のマシン (5.2.6) を見つけてテストを行ったところ、そのサーバーの 5.2.17 でテストしたところ、問題は再現されませんでした。
デバッグ中に、このタイプの操作が発生したときに次のビジネスが上記のエラーを報告したことが判明しました:
PDO を使用してテーブル nw_log (uid フィールドやコンテンツ フィールドなどのテーブル フィールド) にデータの一部を挿入します。コンテンツ フィールド コンテンツは test であり、テーブル フィールドのコンテンツは PDO-> を呼び出すことによってエスケープされます。データベースに保存される前に quote メソッドを使用します。 php5.2.6 マシンでは上記のエラーが報告されますが、5.2.17 マシンでは正常に動作します。
コンテンツを http://a.xxx/?tid=1 に変更したところ、5.2.6 マシンと 5.2.17 マシンの両方で正常に動作したため、コンテンツ形式をもう一度デバッグしました。 href="http://a.xxx/?tid=1">test の場合、5.2.6 と 5.2.17 ではパフォーマンスが正常であるため、一重引用符が原因であると考えられます。