【发布时间】: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”)