Php 为什么我喜欢的搜索会返回所有内容?

Php 为什么我喜欢的搜索会返回所有内容?,php,mysql,sql-like,Php,Mysql,Sql Like,我正在尝试在我满是图像的页面中进行图像搜索 无论我搜索什么,它总是返回数据库中带有标记信息的所有图像 我这样做是因为当有人在搜索框中输入文本时,页面会重定向到以下位置: ob_start(); $input = abs($_GET['input']); $query = "SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%$input'"; $result = mysql_query($query); $data = mysql_fetch_a

我正在尝试在我满是图像的页面中进行图像搜索

无论我搜索什么,它总是返回数据库中带有标记信息的所有图像

我这样做是因为当有人在搜索框中输入文本时,页面会重定向到以下位置:

ob_start();

$input = abs($_GET['input']);
$query = "SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%$input'";
$result = mysql_query($query);
$data = mysql_fetch_array($result) or die (mysql_error());
$rows = mysql_num_rows($result);
$image = $data['image'];

if ($rows==0) {
    echo 'no results found';
}  else {
    $jpgimage = imagecreatefromstring($image);

    $image_width = imagesx($jpgimage);
    $image_height = imagesy($jpgimage);

    $new_size = ($image_width + $image_height)/($image_width*($image_height/45));
    $new_width = $image_width * $new_size;
    $new_height = $image_height * $new_size;

    $new_image = imagecreatetruecolor($new_width, $new_height);

    imagecopyresized($new_image, $jpgimage, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
    $imagearray = imagejpeg($new_image, null);
    header('Content-type: image/jpeg');

    echo $imagearray;
}
这些照片存储为水滴,所以在这里我将它们转换为JPEG并调整大小


其中大部分只是重新调整图像大小,但我不知道为什么mysql查询行中的类似部分不起作用。它总是给我所有带有标签的图片。

我怀疑$input是空的。如果变量$input为null或空字符串,它将创建where子句:

 SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%'

这将使通配符“%”与所有内容匹配。

我怀疑$input为空。如果变量$input为null或空字符串,它将创建where子句:

 SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%'

这将使通配符“%”与所有内容匹配。

我看到的一个问题是第一行的abs。如果你对一个文本字符串做一个abs,你会得到一个零。

我看到的一个问题是第一行的abs。如果对文本字符串进行abs运算,则得到零。

代码使用
$input=mysql\u real\u escape\u string($\u get['input'])
获得更安全的代码。
在您的情况下不需要使用
abs()
函数。

您可以使用
$input=mysql\u real\u escape\u string($\u GET['input'])
来编写更安全的代码。
在您的案例中不需要使用
abs()
函数。

您从
var\u dump($input)
中得到了什么?您的输入应该是什么?当您的输入被调用
abs
时,如果它不是一个数字,它看起来将以null结束。我不是PHP专家,但对我来说,它看起来好像您没有将正确的SQL查询放在一起。使用带有
$input
的参数化查询,您应该不会有问题。(为什么
abs()
$input
赋值中?)您从
var\u dump($input)
中得到了什么?您的输入应该是什么?当您的输入被调用
abs
时,如果它不是一个数字,它看起来将以null结束。我不是PHP专家,但对我来说,它看起来好像您没有将正确的SQL查询放在一起。使用带有
$input
的参数化查询,您应该不会有问题。(为什么
$input
赋值中的
abs()
)我会期望
标记是一个字符串。但它显然是一个正数值
WHERE
tags`LIKE'%4.5'`-这似乎不太合适。是的,它是abs,甚至不知道我为什么这么说,一定没有想清楚。谢谢!我本以为
tags
是一个字符串。但它显然是一个正数值…?
WHERE
tags` LIKE'%4.5''`是的,那是腹肌,我甚至不知道为什么我会这么说,一定是因为我没有正确地思考。谢谢是的,这是腹肌,甚至不知道我为什么这么说,一定是没想清楚。谢谢是的,这是腹肌,甚至不知道我为什么这么说,一定是没想清楚。谢谢