$sql = 'SELECT *
FROM sdb_comments
WHERE goods_id = ' . intval($goods_id) . '
AND for_comment_id IS NULL
AND object_type = "' . $item . '"
AND disabled="false"
AND display = "true"';
$sql = sprintf('SELECT *
FROM sdb_comments
WHERE goods_id = %.0f
AND for_comment_id IS NULL
AND object_type = "%s"
AND disabled="false"
AND display = "true"', (float)$goods_id, $item);
第二種方式較易讀維護,但需注意格式化代號的數值範圍限制。
| 代號 | 說明 | 範圍 |
|---|---|---|
| %d | 有號十進位整數 | -2,147,483,648 ~ 2,147,483,647 (2^31) |
| %u | 無號十進位整數 | 0 ~ 4,294,967,295 (2^32-1) |
| %f / %F | 浮點數(本地化/非本地化) | -3.4E38 ~ +3.4E38 |
| %b | 二進位 | - |
| %c | 字元 | - |
| %o | 八進位 | - |
| %s | 字串 | - |
| %x / %X | 十六進位(小寫/大寫) | - |
資料庫 ID 可能超過 %d 範圍,建議使用 %.0f 格式化浮點數並無條件捨去小數,避免溢位錯誤。