【问题标题】:mysqli_fetch_array to php variable trashmysqli_fetch_array 到 php 变量垃圾
【发布时间】:2014-10-05 21:11:14
【问题描述】:

我在一个文件夹中上传了4张照片,照片的名称在mysql上。然后我“选择”文件的名称,并将它们放入数组 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];

我明白了:

rafiki.png rafiki2.png
rafiki3.pngrafiki4.png 

这意味着数组上有换行符和空格...为什么会这样?

【问题讨论】:

  • 我希望你能逃脱$repId
  • 你的意思是转义到字符串? $repId 对我来说没有问题。它的工作正常。我应该转义到字符串 picArray 元素吗?
  • 在输入查询之前转义变量通常是一种很好的做法,除非系统已经处理它。您无需转义即可将 picArray 元素串起来。
  • var_dump 您的阵列,以便更快、更准确地进行调试。对于 $picArray 项目,使用 trim
  • 使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs

标签: php mysql arrays


【解决方案1】:

可能有新的行与图片名称一起存储在数据库中,这是一个修复,但你应该清理你的数据

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

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2019-02-22
    • 2011-05-07
    相关资源
    最近更新 更多