0

私は php と sql にかなり慣れていないので、オブジェクトまたはネストされたオブジェクトから値を取得しようとしています。print_r コマンドを使用するとコードを表示できますが、実際の日付をオブジェクトから分離できず、datetime 基準を使用して SQL を検索することもできません。「日付」がsmalldatetimeデータ型としてSQLに格納されていることは知っていますが、それを操作する方法がわかりません。

次を使用してSQLを検索しようとすると:

$sql = "SELECT * FROM GL_Register WHERE (Register_Id='5' && Date='2010-12-8 0:00:00')";

次のエラーが表示されます。

配列 ( [0] => 配列 ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [コード] => 102 [2] => [Microsoft][SQL Server Native Client 11.0][SQLサーバー]Incorrect syntax near '&'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near '&'. ) )

そのため、方法がわからないため、日付を含むクエリを適切にプルできません。さらに明確にするために、次の情報を使用してデータベースから情報を取得できますが、Date オブジェクト内から日付を取得することはまだできません。

オブジェクトをロードする方法は次のとおりです。

$sql = "SELECT * FROM GL_Register WHERE Register_Id='3'";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
    die( print_r( sqlsrv_errors(), true));
    }
else{
    echo $sql;
}

while($obj = sqlsrv_fetch_object( $stmt)) {
   $count++;
   $row = '<tr>';
   $row .= '<td>'.$count.'</td>';
   //$row .= '<td>'.$obj->Date->DateTime->date.'</td>';
   $row .= '<td>'.$obj->Account_Id.'</td>';
   $row .= '<td>'.$obj->Customer_Id.'</td>';
   $row .= '<td>'.$obj->Category_Id.'</td>';
   $row .= '<td>'.$obj->Credit_Or_Debit.'</td>';
   $row .= '<td>'.$obj->Memo.'</td>';
   $row .= '<td>$'.$obj->Amount.'</td>';
   $row .= '</tr>';
   echo "$row";
}

「print_r($obj)」を使用すると、次のように表示されます。

stdClass Object ( [Register_Id] => 3 [Account_Id] => 5 [Register_Number] => 17 [Credit_Or_Debit] => D [Accounting_Period_Id] => 13 [Date] => DateTime Object ( [date] => 2010-12- 21 00:00:00 [timezone_type] => 3 [timezone] => MST ) [Register_Type_Id] => 1 [リファレンス] => 300002 [Type_CVEO] => C [Customer_Id] => 362 [Vendor_Id] => 1 [ Employee_Id] => 1 [Other_Name] => [Offset_Account_Id] => 1 [Splits] => N [Amount] => 179.9600 [Mult_Sign] => 1 [Memo] => Security Services [Status] => O [Is_Offset] => N [Offset_Register_Id] => 4 [Branch_Id] => 2 [Job_Id] => 1 [Service_Ticket_Id] => 1 [Category_Id] => 6 [Job_Expense_Code] => [Expense_Type_Id] => 5 [Post_WIP_Account_Id] => 1 [Primary_Register_Number] => 0 [Part_Id] => 1 [Currency_Id] =>1 [Exchange_Rate] => 1.0000 [Amount_Nat] => 179.9600 [Date_Time_Stamp] => DateTime オブジェクト ( [date] => 2010-12-21 12:29:06 [timezone_type] => 3 [timezone] => MST ) )

2 つのことができる必要があり、頭を壁にぶつけているような気がします。それは私の手の届かないところにあり、誰かが私を助けてくれることを願っています.

質問:

  • datetime 基準を使用して SQL クエリを修正する方法 (つまり、過去 3 日以内の日付を持つすべての register_id を取得する)?

  • オブジェクトから日付と時刻を取得して php 変数に配置する方法

4

3 に答える 3

0

&& の代わりに AND を使用する

SELECT * FROM GL_Register WHERE Register_Id='5' AND Date='2010-12-8 0:00:00'
于 2013-07-06T03:56:47.830 に答える
0

2番目の質問に答えました。SQL は DateTime 形式でデータを出力していたため、新しい DateTime 変数を作成し、そのオブジェクトに情報をダンプする必要がありました。それをしたら、必要なデータをフォーマットして、それに応じて使用することができました。

$newDate = new DateTime('NOW');
while($obj = sqlsrv_fetch_object($stmt)) {
$newDate = $obj->Date->format('Y-m-d');

これにより、必要な形式で日付が出力されます。

于 2013-07-15T16:28:37.507 に答える