亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Postgresql:如何使用可以是字符串或日期的變量編寫 WHERE 子句

Postgresql:如何使用可以是字符串或日期的變量編寫 WHERE 子句

PHP
LEATH 2021-11-13 17:31:24
我想編寫一個 postgreSQL 腳本,它允許根據一個人是在表單中輸入他的姓名(字符串)還是出生日期(日期)來在數據庫中查找患者。單獨帶有姓名或單獨出生日期的腳本可以正常工作,但是當與 OR 條件結合使用時,它適用于日期而不適用于字符串:當您使用名稱搜索時,該條目對于日期類型被視為無效。<form method="GET"><p>Name or Date of Bith: <input name=saisie><br><input type=submit value="Find"><br></p></form><?php $c=pg_connect("dbname=dbname user=user");if (isset($_GET["saisie"])) :    $saisie=$_GET["saisie"];    $reponse=pg_query($c,"SELECT patient_id,name,firstname,dob FROM patient WHERE name like '$saisie%' OR dob='$saisie' ORDER BY name");[blablabla....]?>我很驚訝,因為 OR 條件應該允許搜索兩個字段中的一個或另一個:即使字符串對于字段“dob”(日期)無效,它也應該適合字段“name”(字符串) 并且應該相應地啟動搜索,而不是返回“日期類型的無效語法”錯誤......不用說我是 postgreSQL(或任何語言,真的)的初學者,我迷路了,任何提示都會不勝感激 !
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

您的查詢容易受到 SQL 注入的影響,并且由于OR.

但是要擺脫錯誤消息,您可以text在比較之前簡單地將日期轉換為:

... OR CAST(dob AS text) = '$saisie'


查看完整回答
反對 回復 2021-11-13
  • 1 回答
  • 0 關注
  • 168 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號