1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPのヒアドキュメントで作成したSQLクエリが急に効かなくなった

Posted at

環境

名称 バージョン
PHP 7.4.26

問題

フレームワークなしのPHPで作成されたWebシステムを機能改修している中で、ヒアドキュメントを使ってSQLクエリを作っていた箇所があった。
別の担当者がその部分のソースを触って、その人がPJから去った後に自分が動作確認したら、触ったソースが関与している処理が機能していなかった。

解決方法

誤入力で入れたのであろうインデント1個に不幸にされてた\(^o^)/

test.php
<?php
/* ====================
* 変更前のソース
* ====================
*/
$from = <<<SQL
	test_table
SQL;

$order = <<<SQL
	ORDER BY id ASC
SQL;

$limit = <<<SQL
	LIMIT 20
SQL;

var_dump("SELECT * FROM " .$from .$order .$limit);
// SELECT * FROM test_table ORDER BY id ASC LIMIT 20

/* ====================
* 変更後のソース
* ====================
*/
$from = <<<SQL
	test_table
SQL;

$order = <<<SQL
	ORDER BY id ASC
	SQL;

$limit = <<<SQL
	LIMIT 20
SQL;

var_dump("SELECT * FROM " .$from .$order .$limit);
// SELECT * FROM test_tableORDER BY id ASC LIMIT 20

?>

終端IDのインデントした分が文字列本体の全ての行から削除されます。

後書き

噂には聞いていたものの、インデントが動作に直結する場面に遭遇したのは初めてだったので「おぉ~ほんとうにあるんだ~」ってなりました。。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?