Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP&;MySQL选择子字符串_Php_Mysql - Fatal编程技术网

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'];