将mysqli_fetch_array存储到PHP变量中后如何处理?

3

我上传了4张照片到一个文件夹中,并将这些照片的名称存储在mysql中。然后,我使用"SELECT"命令选择文件的名称,并将它们放入数组picArray中,如下所示。但是当我尝试输出内容时,虽然我得到了正确的名称,但似乎它们不能用作目录路径。

以下是代码:

                $con=mysqli_connect("localhost","root","mypass","fixit");
                $con->set_charset("utf8");
                $repId=$repId+1;
                $qr = mysqli_query($con,"SELECT * FROM photos WHERE report='$repId'");


                $picArray = Array();

                while( $row = mysqli_fetch_array($qr) ) {
                    $picArray[] = $row['name'];
                }   

        ?>      

            <div>
                <img  id="img1" src="uploads/<?php echo $repId ?>/<?php echo $picArray[0] ?>" />
                <img  id="img2" src="uploads/<?php echo $repId ?>/<?php echo $picArray[1] ?>" />
            </div>
            <div>
                <img  id="img3" src="uploads/<?php echo $repId ?>/<?php echo $picArray[2] ?>"  />
                <img  id="img4" src="uploads/<?php echo $repId ?>/<?php echo $picArray[3] ?>"  />
            </div>

我需要提醒的是,当我执行以下操作时:
echo $picArray[0];
echo $picArray[1];
echo $picArray[2];
echo $picArray[3];

i get:

rafiki.png rafiki2.png
rafiki3.pngrafiki4.png 

这意味着数组上有换行符和空格...为什么会发生这种情况?

我希望你正在转义 $repId - bear
你的意思是转义字符串吗?$repId对我没有问题。它正常工作。我应该转义picArray元素吗? - Yakoumis
通常最好在将变量输入查询之前对其进行转义,除非系统已经处理了它。您不需要对picArray元素进行转义以将其转换为字符串。 - bear
1
使用var_dump函数来快速、准确地调试数组。对于$picArray中的元素,使用trim函数。 - Unamata Sanatarai
在使用 mysqli 时,应该使用参数化查询和 bind_param 将用户数据添加到查询中。不要使用字符串插值来实现此操作,因为这会导致严重的 SQL 注入漏洞 - tadman
1个回答

4

数据库中可能存储了与图片名称相关的新行,这是一个修复问题的方法,但您应该清理数据。

 while( $row = mysqli_fetch_array($qr) ) {
                    $picArray[] = trim($row['name']);
                }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接