PHP&;MySQL选择子字符串
PHP&;MySQL选择子字符串,php,mysql,Php,Mysql,$content是一个带有“详细描述”的变量。 product\u id是一列,它可能包含MySQL表中名为products的详细描述($content)的子字符串 我试图创建一个select语句,如果$content变量中包含product\u id,该语句将查找记录。然后我想用SELECT statement中的url字段更新另一个名为receive\u sms的表 通过对网站的研究,我得出以下结论。。。。但它不起作用 $mysqlic = mysqli_connect("testsms.c
$content
是一个带有“详细描述”的变量。
product\u id
是一列,它可能包含MySQL表中名为products
的详细描述($content
)的子字符串
我试图创建一个select语句,如果$content
变量中包含product\u id
,该语句将查找记录。然后我想用SELECT statement中的url
字段更新另一个名为receive\u sms
的表
通过对网站的研究,我得出以下结论。。。。但它不起作用
$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')");
有什么想法吗?首先,我不明白你为什么在字段名上使用通配符。您想检查一个值是否包含在该字段的值内,请考虑更改这个值:
... WHERE %product_id% LIKE %$content%);
到
另外,请使用准备好的语句来避免SQL注入。您使用的是MySQLi,它支持它们
编辑
另外,mysqli\u查询的返回是一个mysqli资源。您必须从资源中获取结果,才能访问您要查找的值。它应该是:
$prod_res = mysqli_query($mysqlic, "SELECT url from products
WHERE '$content' LIKE CONCAT('%', product_id, '%')");
或:
您需要在引号中加上$content
实际上,如果您使用预先准备好的查询,那么“$content”
将成为占位符?
查询后,需要调用mysqli\u fetch\u assoc()
获取列值:
$row = mysqli_fetch_assoc($prod_res);
$url = $row['url'];
谢谢你,西蒙。很有道理。如何不使用mysqli。我不熟悉php和MySQL。我学到的大部分知识都是通过查看本论坛上的其他代码,您需要在“%$content%”
周围加上引号。但这与问题的要求相反。这会找到$content
包含在产品id
中的记录,他说产品id包含在$content中。不幸的是,它仍然不起作用。在这个站点上做了更多的研究之后,它可能是我分配给SELECT语句的变量。我应该使用SET命令分配$prod_res变量吗?mysqli_query()
不会返回选择中列的值。您必须调用一个获取函数,然后从中获取值。看看我的最新答案。谢谢你,芭芭拉。你是个天才。我真的很感谢你的帮助。它工作得很好。(我花了几个小时寻找这个)几个小时?这不是mysqli文档中的示例吗?
$prod_res = mysqli_query($mysqlic, "SELECT url from products
WHERE LOCATE(product_id, '$content') != 0");
$row = mysqli_fetch_assoc($prod_res);
$url = $row['url'];