0

例如。地址页 test.php?prid=4477535

代码页 test.php

function query($query) {
    $database = 'test';
    $host = 'test';
    $username = 'test';
    $password = 'test';
    $link = mysql_connect($host,$username,$password);
    if (!$link) {
    die(mysql_error());
    }
    $db_selected = mysql_select_db($database);
    if (!$db_selected) {
    die(mysql_error());
    }
    $result = mysql_query($query);
    mysql_close($link);
    return $result;
    }


        $product_idn=$_GET['prid'];

        $select_image = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'") or die(mysql_error());
        foreach ($select_image as $row)
        {
        $select_image_array[]=$row->image;
        }

print_r ($select_image_array);

收到请求

SELECT * 
FROM products_images
WHERE  `product_idn` =  '4477535'

如果从 phpmyadmin 中选择,我有 10 行。

但是如果我使用test.php?prid=4477535我会看到空白页面。

print_r ($select_image_array) 不显示数组。

请告诉我为什么我看到带有 phpmyadmin 的行而看不到带有脚本的行?

4

5 回答 5

3

就像另一个说的那样,您很容易受到 SQL 注入,因为您不序列化您的输入,但是要修复您的代码,请使用以下命令:

$select_image = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'") or die(mysql_error());

while($data = mysql_fetch_assoc($select_image))
{
    echo $data['image'];
}
于 2012-11-25T01:32:53.733 回答
0

你这样做是不对的。您必须将资源(mysql_query 返回资源)获取到数组中,并且数组的键将是查询返回的行的名称。

$product_idn=$_GET['prid'];

$select_image = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'") or die(mysql_error());

    while($fetch=mysql_fetch_assoc($select_image))
    {
         echo $fetch['image'];
    }

    print_r ($select_image_array);

顺便说一句,你这里有一个安全漏洞——SQL 注入。

于 2012-11-25T01:27:27.173 回答
0

测试以下

$result = query("SELECT * FROM products_images WHERE `product_idn`='$product_idn'")
$select_image = mysql_fetch_assoc($result);
var_dump($select_image);

有关更多信息,请查看http://se2.php.net/mysql_query

于 2012-11-25T01:28:55.237 回答
0

你只是 echo $row->image; 从不初始化 $select_image_array

于 2012-11-25T01:31:12.313 回答
0

print_r ($select_image_array);不会显示任何内容,因为没有$select_image_array定义。你的意思是print_r ($select_image);

query() 是您定义的函数吗?如果没有,并且您没有错误,您可能什么也看不到。

您还需要清理您的 SQL。现在最简单的方法,因为它是一个整数:

$product_idn=(int)$_GET['prid'];
于 2012-11-25T01:34:07.277 回答