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

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

將 DATE 插入 MYSQL 數據庫。將值從 Android 發布到 PHP

將 DATE 插入 MYSQL 數據庫。將值從 Android 發布到 PHP

長風秋雁 2023-04-26 14:35:26
我有一個格式為 dd-mm-yyyy 的日期值,我想將 DATE 或 DATETIME 值插入 mysql 數據庫,但插入始終為 0000-00-00已經嘗試過了,但對我不起作用。$dateOne = $_POST['dateOne'];$dateTwo = $_POST['dateTwo'];$timestamp = date('Y-m-d', strtotime($dateOne));$ts = date('Y-m-d', strtotime($dateTwo));PHP部分$name = $_POST['name'];$myname= $_POST['myName'];$dateOne = $_POST['dateOne'];$dateTwo = $_POST['dateTwo'];$timestampa = date('Y-m-d', strtotime($dateOne));$tsa = date('Y-m-d', strtotime($dateTwo));$sql = "INSERT INTO hires_bp (suraduju_od, suraduju_do,  id_band, id_producer) VALUES ($timestampa, $tsa, (SELECT id FROM band WHERE band_name = '$myname'), (SELECT id FROM producer WHERE producer_name = '$name'))";Android / Java 部分 - 對于 dateTwo.. dateOne 是一樣的mCurrentDate = java.util.Calendar.getInstance();int year = mCurrentDate.get(java.util.Calendar.YEAR);int month = mCurrentDate.get(java.util.Calendar.MONTH);int day = mCurrentDate.get(java.util.Calendar.DAY_OF_MONTH);DatePickerDialog mDatePicker = new DatePickerDialog(Calendar.this, new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {mDateTwoEditText.setText(dayOfMonth + "-" + (month+1) + "-" + year);mCurrentDate.set(year, month, dayOfMonth);}}, year, month, day);mDatePicker.show();}從 edittext 和發布參數中獲取字符串.. 使用 volley.. 這只是代碼的一小部分,因為我認為這里沒有問題.. 其他數據插入正確..final String dateOne = mDateOneEditText.getText().toString().trim();final String dateTwo = mDateOneEditText.getText().toString().trim();......protected Map<String, String> getParams() throws AuthFailureError {                Map<String, String> params = new HashMap<>();                params.put("name", name);                params.put("myName", majName);                params.put("dateOne", dateOne);                params.put("dateTwo", dateTwo);                return params;            }我預計插入將是實際選擇的日期,但插入是 0000-00-00.. 其他數據插入正確..
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

問題出在這里:

$sql = "插入 hires_bp (suraduju_od, suraduju_do, id_band, id_producer) VALUES ($timestampa, $tsa, (SELECT id FROM band WHERE band_name = '$myname'), (SELECT id FROM producer WHERE producer_name = '$name' ))";

'' 丟失 --> $timestampa 和 $tsa..

'$timestampa' 和 '$tsa'


查看完整回答
反對 回復 2023-04-26
?
倚天杖

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

MySql 默認的日期格式是YYYY-MM-DD。

將日期格式從 dd-mm-yyyy 更改為yyyy-mm-dd它會起作用


查看完整回答
反對 回復 2023-04-26
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

智能對象,而不是啞字符串

我們在 Java 和 SQL 中都有數據類型,因此請使用它們。僅僅使用字符串來思考和工作是笨拙的、容易出錯的,并且使您容易受到SQL 注入攻擊。

相比之下,使用適當的數據類型可以使您的代碼更簡單、更自文檔化、提供類型安全并確保有效值。

避免遺留日期時間類

您正在使用多年前隨著 JSR 310 的采用而被java.time類取代的可怕的日期時間類。

java.time

用于LocalDate僅限日期的值。此類適用于處理類似于 SQL 標準類型的數據庫列DATE

LocalDate?ld?=?LocalDate.of(?2019?,?1?,?23?)?;??//?January?23,?2019.

使用 JDBC 4.2 及更高版本,傳遞給數據庫。使用準備好的語句來防止 SQL 注入攻擊。

myPreparedStatement.setObject(?…?,?ld?)?;

恢復。

LocalDate?ld?=?myResultSet.getObject(?…?,?LocalDate.class?)?;

解析字符串

java.time類在解析/生成表示日期時間值字符串時默認使用標準 ISO 8601 格式。

LocalDate?ld?=?LocalDate.parse(?"2019-01-23"?)?;

生成字符串

生成字符串以顯示給用戶。使用 自動本地化DateTimeFormatter.ofLocalizedDate,或生成標準 ISO 8601 格式的字符串。

String?output?=?ld.toString()?;??//?Generate?string?in?standard?YYYY-MM-DD?format.

要本地化,請指定:

  • FormatStyle確定字符串的長度或縮寫。

  • Locale確定:

    • 用于翻譯日期名稱、月份名稱等的人類語言。

    • 決定縮寫、大寫、標點符號、分隔符等問題的文化規范。

例子:


Locale l = Locale.CANADA_FRENCH ;? ?// Or Locale.US, Locale.JAPAN, etc.

DateTimeFormatter f =?

? ? DateTimeFormatter

? ? .ofLocalizedDate( FormatStyle.FULL )

? ? .withLocale( l )

;

String output = ld.format( f );

2019 年 1 月 23 日星期三

http://img4.sycdn.imooc.com/6448c669000183c306600384.jpg

查看完整回答
反對 回復 2023-04-26
  • 3 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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