gpt4 book ai didi

php - 在数组值之前和之后添加字符串以进行 php>mysql 搜索

转载 作者:行者123 更新时间:2023-11-29 13:45:43 25 4
gpt4 key购买 nike

我有一个带有多个复选框的 html 表单。我将它们传递给 php...

这些值将像“G,BW”一样出现(“BW,G”也需要匹配)在 check.php 中,我需要从 $_GET 中获取值并修改它们以进行 sql 查询...

<?php
if(!empty($_GET['wireColor'])) {
foreach($_GET['wireColor'] as $colors) {
echo $colors; //make sure it's right, then comment out
}
}

$colors = rtrim($colors, ','); //Get rid of trailing , - not working right

$wireSearch = '\'REGEXP \'.*(^|,).$wireColor.(,|$)\''; //Trying to add the sql bits to pass to the query.

理想情况下要通过:

$colors_lookup_sql = "SELECT * FROM parts WHERE ( wire_colors REGEXP '.*(^|,)$wireSearch(,|$)' and wire_colors REGEXP '.*(^|,)$wireSearch(,|$)' );";

以下是查询结尾的样子:

SELECT * FROM parts WHERE ( wire_colors REGEXP '.*(^|,)G(,|$)' and wire_colors REGEXP '.*(^|,)BW(,|$)' );

我很难将正则表达式位放入查询中。

更新

这是我现在拥有的:

<?php
if(!empty($_GET['wireColor'])) {
foreach($_GET['wireColor'] as $colors) {
$wireSearch = ' REGEXP \'.*(^|,)' .$colors.'(,|$)\' AND ';
}
}

$Search = rtrim($wireSearch, 'AND'); //Trying to trim the last "AND"
$colors_lookup_sql = "SELECT * FROM parts WHERE ( wire_colors $wireSearch% );";

这给了我大部分我需要的东西,但是打印/回显结果,我得到:

$wireSearch 最终为:REGEXP '.*(^|,)G(,|$)' AND REGEXP '.*(^|,)BW(,|$)' AND这太棒了——我只需要用核武器攻击最后一个“AND”。上面的修剪将其替换为第二个值。奇怪。

$colors_lookup_sql 最终为:SELECT * FROM parts WHERE (wire_colors REGEXP '.*(^|,)BW(,|$)' AND % );

但是由于某种原因,数组中的第一个值消失了,我不明白,因为它出现在 sql 语句之前。

最佳答案

我不确定查询中的正则表达式,因为我没有使用过它,但是:

$wireSearch = '\'REGEXP \'.*(^|,).$wireColor.(,|$)\'';

这里有一个问题,变量 $wireColor 位于字符串内部,而您正在使用 ',因此内部的任何内容都不会被读取为变量,它应该是像这样:

$wireSearch = '\'REGEXP \'.*(^|,)'.$wireColor.'(,|$)\'';

关于php - 在数组值之前和之后添加字符串以进行 php>mysql 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17440624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com