【问题标题】:PDO Select query inside a while loop when uploading files it not excuting [duplicate]上传文件时在while循环中选择查询而不执行[重复]
【发布时间】:2014-01-08 22:29:59
【问题描述】:

我正在运行这个 PHP PDO 代码来上传文件,然后在 while 循环中它正在运行一个选择查询是 PDO:

if(is_uploaded_file($_FILES['dd_submission_form']['tmp_name'])) {
        echo "<h3>" . "File ". $_FILES['dd_submission_form']['name'] ." uploaded successfully." . "</h3>";
    }

    //Import uploaded file to Database
    $handle = fopen($_FILES['dd_submission_form']['tmp_name'], "r");

    fgetcsv($handle);

    while(($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($data[5] == '17') {

            echo '<strong>DD Ref: </strong>'.$data[0].'<br>';

            $stmt = $pdo_conn->prepare("SELECT * from customer where directdebit_reference = :directdebit_reference ");
            $stmt->execute(array(':directdebit_reference' => $data[0]));
            $customer = $stmt->fetchAll(PDO::FETCH_ASSOC);
            if(count($customer) > 0) {

                echo '<h3>'.$customer["company"].'</h3>';

            }
        }
    }

但它似乎没有在 while 循环中选择任何行

我知道行存在,因为当我在 PHPMyAdmin 中运行查询时它返回行

如果我运行这个 MySQL PHP 查询:

$sql="SELECT * from customer where directdebit_reference = '".$data[0]."' ";
rs=mysql_query($sql,$conn);
$result=mysql_fetch_array($rs);
echo $result["company"];

它很好地呼应了公司专栏

【问题讨论】:

  • 你应该看看errorinfo()返回什么。可能存在您没有考虑到的错误。
  • 我尝试过 echo $stmt->errorCode();在我执行命令之后,但没有显示。我的连接字符串如下所示: $pdo_conn = new PDO('mysql:host=localhost;dbname=dbname', 'username', 'password', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  • 我认为您应该阅读PDOStatement::fetchAll() 的文档。密切关注返回值。您还应该启用正确的错误报告。如果你有,你会被告知问题(未定义索引“company”)

标签: php pdo


【解决方案1】:

您正在使用fetchAll 方法。它将所有获取的查询结果加载为嵌套数组。因此,对于第一个客户的数据,您需要:

echo '<h3>'.$customer[0]["company"].'</h3>';

或者,您可以更新为:

$customer = $stmt->fetch(PDO::FETCH_ASSOC);

或者,更好的是,将结果限制为一个。

$stmt = $pdo_conn->prepare("SELECT *
    FROM customer 
    WHERE directdebit_reference = :directdebit_reference
    LIMIT 1");
$stmt->execute(array(':directdebit_reference' => $data[0]));
$customer = $stmt->fetch(PDO::FETCH_ASSOC);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 2017-06-28
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多