{"id":19027453,"date":"2026-09-23T14:28:50","date_gmt":"2026-09-23T14:28:50","guid":{"rendered":"https:\/\/wordpress.org\/support\/topic\/empty-array-in-getprojectmembers-causes-sql-error-in\/"},"modified":"2026-09-23T14:28:50","modified_gmt":"2026-09-23T14:28:50","slug":"empty-array-in-getprojectmembers-causes-sql-error-in","status":"publish","type":"topic","link":"https:\/\/wordpress.org\/support\/topic\/empty-array-in-getprojectmembers-causes-sql-error-in\/","title":{"rendered":"Empty array in getProjectMembers() causes SQL error IN ()"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>Hi LazyCoders team,<br \/><br \/>Found in 1.7.63, and still present in SVN trunk: <code>src\/Controller\/v3\/Lazytask_ProjectController.php<\/code><br \/><br \/>Two methods guard their input like this:<br \/><br \/><code>php&lt;br&gt;&lt;br&gt;\/\/ getProjectMembers(), line 379&lt;br&gt;&lt;br&gt;if ($projectsId == &#039;&#039;) {&lt;br&gt;&lt;br&gt;\/\/ getProjectInvitedMembers(), line 3131&lt;br&gt;&lt;br&gt;if ($projectsId == &#039;&#039;) { return &amp;#091;]; }&lt;br&gt;&lt;br&gt;<\/code><br \/><br \/>Since PHP 8, <code>&amp;#091;] == &#039;&#039;<\/code> is <strong>**false**<\/strong>, so an empty array gets past the guard. The code then runs <code>implode(&#039;, &#039;, array_fill(0, 0, &#039;%s&#039;))<\/code>, which gives <code>&#039;&#039;<\/code>, and the query ends in <code>WHERE projectMembers.project_id IN ()<\/code>. That is a MySQL syntax error, logged as <code>WordPress database error You have an error in your SQL syntax ... near &#039;)&#039;<\/code>. We saw it about 10 times a day in our PHP error log before patching.<br \/><br \/><code>getNoOfTasksByProject()<\/code> (line 3177) already handles this correctly with a second check:<br \/><br \/><code>php&lt;br&gt;&lt;br&gt;if ($projectsId == &#039;&#039;) { return &amp;#091;]; }&lt;br&gt;&lt;br&gt;if (is_array($projectsId) &amp;&amp; sizeof($projectsId) == 0) { return &amp;#091;]; }&lt;br&gt;&lt;br&gt;<\/code><br \/><br \/><strong>**Suggested fix:**<\/strong> the same guard in the other two methods, or simply:<br \/><br \/><code>php&lt;br&gt;&lt;br&gt;if (empty($projectsId)) { return &amp;#091;]; }&lt;br&gt;&lt;br&gt;<\/code><br \/><br \/>(<code>empty()<\/code> covers <code>&#039;&#039;<\/code>, <code>null<\/code> and <code>&amp;#091;]<\/code>. A project id of <code>0<\/code>\/<code>&#039;0&#039;<\/code> is not a valid id here anyway.)<br \/><br \/>We've been running the <code>empty()<\/code> version on 12 sites (PHP 8.4 and 8.5) since 2026-09-18 with no side effects. It would be great to have it upstream so we can drop our local patch.<br \/><br \/>Environment: WordPress 7.2-alpha (nightly), PHP 8.4.25 \/ 8.5.11, LazyTasks 1.7.63 plus premium, timetracker and whiteboard add-ons.<br \/><br \/>Thanks!<\/code><\/pre>\n","protected":false},"template":"","class_list":["post-19027453","topic","type-topic","status-publish","hentry","topic-tag-database-error","topic-tag-php-8","topic-tag-sql-error"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19027453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19027453\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=19027453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}