Ik heb een wrapper geschreven voor de nieuwe ON DUPLICATE KEY functie die in MySQL 4.1 zit, omdat ik thuis hier graag gebruik van maak, terwijl ik op de server waar mijn code draait, geen toegang heb tot MYSQL 4.1
Ik post deze code om twee redenen:
- Ik hoop dat er mensen zijn die hetzelfde probleem hebben en dat ze hiermee geholpen worden.
- En ik vraag mij af of deze code niet nog wat geöptimaliseerd kan worden.
Alvast bedankt voor mogelijkse optimalisaties!
Ik post deze code om twee redenen:
- Ik hoop dat er mensen zijn die hetzelfde probleem hebben en dat ze hiermee geholpen worden.
- En ik vraag mij af of deze code niet nog wat geöptimaliseerd kan worden.
Alvast bedankt voor mogelijkse optimalisaties!
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| if (preg_match("/INSERT INTO(.+?)\((.+?)\)[ ]*VALUES[ ]*\((.+?)\)[ ]*ON[ ]+DUPLICATE[ ]+KEY[ ]+UPDATE[ ]+(.+)/i", $query, $Matches)) { preg_match("/(.*)[ ]+ON[ ]+DUPLICATE[ ]+KEY[ ]+UPDATE[ ]+(.*)/i", $Matches[0], $MatchInsert); $insert = $MatchInsert[1] . ";"; if (!(mysql_query($insert))) { if (stristr(mysql_error(),"DUPLICATE")) { $update = "UPDATE " . $Matches[1] . " SET " . $MatchInsert[2] . ";"; mysql_query($update) or trigger_error("Unable to execute the provided query!<br />The query to execute was: . " . $query . ".<br />The error that was generated is: " . mysql_error() . ".",E_USER_ERROR); } else { trigger_error("Unable to execute the provided query!<br />The query to execute was: . " . $query . ".<br />The error that was generated is: " . mysql_error() . ".",E_USER_ERROR); } } } |
[ Voor 8% gewijzigd door kvaruni op 11-11-2003 20:34 ]