ホームページ  >  記事  >  バックエンド開発  >  PHP ADO アクセス データベース更新ステートメントは主キーの値を参照できません

PHP ADO アクセス データベース更新ステートメントは主キーの値を参照できません

WBOY
WBOYオリジナル
2016-06-23 14:01:09875ブラウズ

Noはアクセステーブルの主キーであることに注意してください

レコードNo=290のIDを11に変更したいと思っています。以下の2文を実行しても変化はありません
$query = "update sensors set ID= 11 where No=290";
$result =$conn->Execute($query);
------------------------- ------- -------------
ただし、次の 2 つの文は実行後も有効で、type=49 のレコード ID を 11 に変更できます
$query = "update sensors set ID=11 where type= 49";
$result =$conn->Execute($query);
------------------------ ---------- ------------------

主キーの値を引用符で囲むことが機能しない理由を知りたいですか?


ディスカッションに返信 (解決策)

これを試してください:
センサー セット ID=11 を更新します (No=290 および type=49)

主キーが繰り返されていますか~

これを試してください:
センサー セット ID を更新=11 where No=290 and type=49

主キーは繰り返されていますか~

システムによって自動的に追加された主キーは一意であり、重複する値は存在できません
次の文は OK (XXXXXX は特定のフィールドです)更新する必要があります)
センサーを更新する XXXXXXXX (ID=15、type=48、prop=0)


これを試してください:
センサーを更新する ID=11 (No=290、type=49)

そうですか? 主キーは繰り返されます ~

主キーはシステムによって自動的に追加され、重複する値はありません
次の文は OK です (XXXXXX は更新する必要がある特定のフィールドです)
更新センサーは ID=15、type=48、prop=0 で XXXXXXXX を設定します


select * from sensors where No=290 見てください

type フィールドは文字型ですか?代わりに次のようにします

 update sensors set ID=11 where type='49'

no はアクセスの予約語です (http://office.microsoft.com/zh-cn/access-help/HA010030643.aspx を参照)
識別子を選択するときに避けるべき予約語です名前
使用されている場合とそうでない場合 変更するのが便利な場合は、角括弧で囲んでエスケープする必要があります

$query = "update sensors set ID=11 where [No]=290";アクセスの予約語 (http://office.microsoft.com/zh-cn/access-help/HA010030643.aspx を参照)

識別子の名前を選択するときに避けるべき予約語

使用されており、アクセスに不便な場合変更する場合はエスケープする必要があります: 角括弧で囲みます

$query = "update sensors set ID=11 where [No]=290";

テストしたところ、上記のように No が予約語であることは事実です。正しい結果を得るには、角かっこで囲んでください。結果はこちらです。ありがとうございます。投稿に対してポイントを差し上げます。 〜

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。