gpt4 book ai didi

PHP 检查数据库是否包含字符串

转载 作者:行者123 更新时间:2023-12-01 00:45:56 25 4
gpt4 key购买 nike

我有一个包含数据的数组,我正在遍历数据。

对于每个字符串,我想检查它是否存在于数据库(整个表)中。它可能在另一个字符串中(因此如果表包含 heyredcat,并且您检查红色,它也会返回 true)。

我想出了这个示例脚本,但我无法想出 MySQL 查询,谷歌搜索得到了许多关于“if column equals string”但不是整个表中的字符串的好建议。

<?php 
$colors = array("red","green","blue","yellow");
foreach ($colors as $value)
{
$result = mysql_query("SELECT * FROM products where $value ...... ") or die(mysql_error());
if($result){
echo "Color" .$value. "is present";
else {
echo "Color" .$value. "is not present";
}
}
?>

我应该使用什么 MySQL 查询?另外,我想知道,这是一种有效的方法吗? (耗时)

最佳答案

这是查询的样子:

$res = mysql_query("SELECT 1 FROM `products` WHERE
`col1` LIKE '%" . $value . "%'
OR `col2` LIKE '%" . $value . "%'
OR `col3` LIKE '%" . $value . "%'
.. etc
");
$num = mysql_num_rows($res);
if ($num === 0) { // not found

但是请记住,如果用户可以选择颜色列表,这很容易受到 SQL 注入(inject)的影响。

所以你会想做:

$value = mysql_real_escape_string($value);
mysql_query("SELECT 1 FROM `products` WHERE
`col1` LIKE '%" . $value . "%'
OR `col2` LIKE '%" . $value . "%'
OR `col3` LIKE '%" . $value . "%'
.. etc
");

可以通过查看 mysql 模式动态生成列名。作弊的方法是先执行 SELECT * FROM table LIMIT 1 以获取所有列名。


更好的方法是使用 PDO 驱动程序,它具有更好(更不易出错)的方式将参数插入查询。

关于PHP 检查数据库是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22177468/

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