2015-07-28 4 views
0

Я не могу сосчитать строки, которые имеют апостроф в таблице. Вот мой запрос.Как считать все строки с апострофом в таблице на PHP?

$name = "'"; // variable declared for apostrophe 

$script_select = mysql_query("SELECT COUNT(*) AS rowcount FROM (SELECT * FROM my_db.my_tb WHERE (customer_name REGEXP '".$name."' 
OR address_line_1 REGEXP '".$name."' OR address_line_2 REGEXP '".$name."' 
OR address_line_3 REGEXP '".$name."' OR address_line_4 REGEXP '".$name."' 
OR address_line_5 REGEXP '".$name."')) counted"); 

    while ($row = mysql_fetch_array($script_select)) 
    { 
     $sel_row = $row['rowcount']; 

    } 

ответ

0

Я думаю, что вы можете заменить REGEXP на LIKE и используя

$name = "%\'%"; 

Он должен сделать работу :)

2

Вы можете просто запустить обычный запрос, как это вместо того, чтобы все, что регулярное выражение и подзапросы:

select 
    count(*) as recordCount 
from 
    my_db.my_tb 
where 
    customer_name like '%\'%' 
    or address_line_1 like '%\'%' 
    or address_line_2 like '%\'%' 
    or address_line_3 like '%\'%' 
    or address_line_4 like '%\'%' 
    or address_line_5 like '%\'%' 
1

Для простого сопоставления образцов вы можете использовать LIKE, но вам нужно избегать quot е символ:

$script_select = mysql_query(
    "SELECT COUNT(*) AS rowcount FROM my_db.my_tb ". 
     "WHERE customer_name LIKE '%''%' OR address_line_1 LIKE '%''%' OR address_line_2 LIKE '%''%' OR address_line_3 LIKE '%''%' OR address_line_4 LIKE '%''%' OR address_line_5 LIKE '%''%'"); 

И вам не нужно подзапрос - регулярная COUNT будет достаточно.

P.S. в этом случае SQL-инъекция не является проблемой, но вы не должны использовать функции mysql_* больше - переключитесь на mysqli или PDO.

0
$name = "%''%"; // variable declared for apostrophe 

$script_select = mysql_query("SELECT COUNT(*) AS rowcount FROM (SELECT * FROM my_db.my_tb WHERE (customer_name LIKE '".$name."' 
OR address_line_1 LIKE '".$name."' OR address_line_2 LIKE '".$name."' 
OR address_line_3 LIKE '".$name."' OR address_line_4 LIKE '".$name."' 
OR address_line_5 LIKE '".$name."')) counted"); 
+0

Hi All, Благодарим за помощь. Теперь он разрешен. –

Смежные вопросы