Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Remove all redundant references by kamil-tekiela · Pull Request #350 · joomla-framework/database · GitHub
Skip to content

Remove all redundant references - #350

Merged
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding
Feb 15, 2026
Merged

Remove all redundant references#350
HLeithner merged 2 commits into
joomla-framework:3.x-devfrom
kamil-tekiela:Improve-mysqli-parameter-binding

Conversation

@kamil-tekiela

Copy link
Copy Markdown
Contributor

This PR removes call_user_func_array which was necessary in PHP 5. The references magic was only needed for call_user_func_array. The only reference needed is for rowBindedValues which is because PHP cannot handle references to properties the same way as it does with variables. In the future version, you can get rid of this completely after switching to get_result.

@HLeithnerHLeithner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First thanks for your pull request. I added some comments.

I didn't tested if the reference with mysql statement object but tested it with user defined variable-length argument lists parameter which worked fine.

Can you elaborate what you mean with

after switching to get_result

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

@HLeithner

Copy link
Copy Markdown
Contributor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.

Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

@kamil-tekiela

kamil-tekiela commented Oct 18, 2025

Copy link
Copy Markdown
ContributorAuthor

Can you elaborate what you mean with

after switching to get_result

Right now, composer says that PHP 8.1 is the minimum required version. From PHP 8.2 the get_result becomes always available. Until then, you cannot make the switch as it could potentially break code for people who are running mysqli compiled with libmysqlclient.
Once you make the switch to PHP 8.2, you can replace the current code because you do no use result binding in reality. You just need it because there is no alternative. Using get_result will simplify the code and remove the workaround left by me.

I think I still don't get you sorry, which function is new in php 8.2? get_result on the statement exists since 5.3 and no changes are in the function description. Also we use bind_result if I have checked the code correctly.

There is no new function. As you can see on https://www.php.net/manual/en/mysqli-stmt.get-result.php in the note box:

Available only with mysqlnd.

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

@HLeithner

Copy link
Copy Markdown
Contributor

And if you recall my RFC that was implemented in PHP 8.2 https://wiki.php.net/rfc/mysqli_support_for_libmysql the feature to compile mysqli with libmysqlclient was dropped. So since PHP 8.2, you can safely use get_result() knowing that it will be available on all user platforms.

My whole point is that you don't need bind_result and your code only uses it because get_result might not have been available. In the future, you can refactor the code and remove bind_result.

ok, now I get it, thanks. would be useful for the next major release. If you like I to create a pr I can create a new branch for it.

Comment threadsrc/Mysqli/MysqliStatement.php Outdated
Comment threadsrc/Mysqli/MysqliStatement.php
@kamil-tekiela
kamil-tekielaforce-pushed the Improve-mysqli-parameter-binding branch from 7f3dce5 to 4f9485dCompareOctober 26, 2025 12:37
@richard67

Copy link
Copy Markdown
Contributor

@HLeithner GitHub still shows that you requested changes, but the review comments are all resolved. Could you review again and approve if ok? Thanks in advance.

@rdeutzrdeutz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review

@richard67

Copy link
Copy Markdown
Contributor

@kamil-tekiela I've allowed myself to fix the 2 conflicts in the src/Mysqli/MysqliStatement.php file caused by the previously merged PR #349 . Please check and report back if I've done that right. Thanks in advance.

@kamil-tekiela

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay. Yes, that is correct.

@HLeithner
HLeithner merged commit d8743f2 into joomla-framework:3.x-devFeb 15, 2026
33 checks passed
@HLeithner

Copy link
Copy Markdown
Contributor

Thanks @kamil-tekiela

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamil-tekiela@HLeithner@richard67@rdeutz