PHP& MySQL SELECT子串

时间:2014-06-07 17:20:54

标签: php mysql

$content是一个带有详细说明的变量'。 product_id是一列,可能包含名为$content

的MySQL表中详细描述(products)的子字符串

我正在尝试创建一个select语句,如果product_id变量中的$content为CONTAINED,则会找到一条记录。然后我想用SELECT staement中的receive_sms字段更新另一个名为url的表 在网站上研究我得出以下内容......但它没有工作

$mysqlic = mysqli_connect("testsms.cloudaccess.net", "username", "password", "testsms2");
$prod_res=mysqli_query($mysqlic,"SELECT url from products
                                 WHERE %product_id% LIKE %$content%");
mysqli_query($mysqlic,"INSERT INTO recieve_sms (comments) VALUES ('$prod_res')");

任何想法?

2 个答案:

答案 0 :(得分:0)

嗯,首先,我不明白为什么你在你的字段名称上使用通配符。您想要检查某个值是否包含在该字段的值中,请考虑更改此值:

... WHERE %product_id% LIKE %$content%);

... WHERE product_id LIKE '%$content%');

另外,请使用预准备语句来避免SQL注入。您正在使用支持它们的MySQLi。

修改

此外,mysqli_query的返回是MySQLi资源。您必须从资源中获取结果才能访问您正在寻找的值。

答案 1 :(得分:0)

应该是:

$prod_res = mysqli_query($mysqlic, "SELECT url from products
                                    WHERE '$content' LIKE CONCAT('%', product_id, '%')");

或:

$prod_res = mysqli_query($mysqlic, "SELECT url from products
                                    WHERE LOCATE(product_id, '$content') != 0");

您需要将$content放在引号中。

实际上,如果您使用准备好的查询会更好,那么'$content'将成为占位符?

查询后,您需要调用mysqli_fetch_assoc()来获取列值:

$row = mysqli_fetch_assoc($prod_res);
$url = $row['url'];