For example, the column "foo" in the table "bar" should match either "baz" or "widget". However, "baz3" or "widget39" would also be a match...
Is there a way I can search for all four variables at the same time? I tried using a regexp, but it didn't work...
This is what I tried:
SELECT foo FROM bar WHERE foo REGEXP "^($a¦$b¦$c¦$d)[0-9]*$"
What am I doing wrong?
mysql_query [php.net](
"SELECT [mysql.com] field §FROM§ table WHERE [mysql.com] field
REGEXP [mysql.com] \"^({$foo[0]}¦{$foo[1]}¦{$foo[2]}¦{$foo[3]})[0-9]*$\"");
#
mysql_query [php.net](sprintf [php.net](
'SELECT [mysql.com] %s §FROM§ %s WHERE [mysql.com] %s
REGEXP [mysql.com] "^(%s¦%s¦%s¦%s)[0-9]*$"',
$field, $table, $field, $foo[0], $foo[1], $foo[2]));
#
mysql_query [php.net](sprintf [php.net](
'SELECT [mysql.com] %s §FROM§ %s WHERE [mysql.com] %s
REGEXP [mysql.com] "^(%s)[0-9]*$"',
$field, $table, $field, implode [php.net]('¦', $foo)));
Andreas
$foo = array('a1','a2','a3','a4');
echo "<br>";
echo "SELECT foo FROM bar WHERE foo
REGEXP \"^(" . $foo[0] . "¦" . $foo[1] . "¦" . $foo[2] . "¦"
. $foo[3] . ")[0-9]*$\"";
echo "<br>";
echo "SELECT foo FROM bar WHERE foo
REGEXP \"^({$foo[0]}¦{$foo[1]}¦{$foo[2]}¦{$foo[3]})[0-9]*$\"";
echo "<br>";
echo sprintf('SELECT %s FROM %s WHERE %s
REGEXP "^(%s¦%s¦%s¦%s)[0-9]*$"', 'foo', 'bar', 'foo', $foo[0],
$foo[1], $foo[2], $foo[3]);
echo "<br>";
echo sprintf( 'SELECT %s FROM %s WHERE %s
REGEXP "^(%s)[0-9]*$"', 'foo', 'bar', 'foo', implode('¦', $foo));
echo "<br>";
all produce the same string:
SELECT foo FROM bar WHERE foo REGEXP "^(a1¦a2¦a3¦a4)[0-9]*$"
SELECT foo FROM bar WHERE foo REGEXP "^(a1¦a2¦a3¦a4)[0-9]*$"
SELECT foo FROM bar WHERE foo REGEXP "^(a1¦a2¦a3¦a4)[0-9]*$"
SELECT foo FROM bar WHERE foo REGEXP "^(a1¦a2¦a3¦a4)[0-9]*$"
It´d be interesting to know what caused these problems for you.
Andreas