Выполнить запрос в операторе IF внутри цикла FOR с помощью PHPExcel - PullRequest
0 голосов
/ 19 февраля 2019

У меня вопрос по выполнению запроса внутри оператора IF.Я начну с того, как я хочу запустить процесс.Изначально у меня есть файл Excel, который я хочу загрузить в базу данных MYSql.Используя PHPExcel, я могу получить данные из файла Excel.Теперь, что я хочу сделать, это для всех данных в файле Excel, он будет сравниваться с существующими данными в базе данных.Если данные сопоставлены, то он выполнит запрос для вставки в таблицу успеха, но если данные не сопоставлены, он выполнит запрос для вставки в таблицу ошибок.

Вот мой код, код теперьпросто пропустите условие IF и выполните условие сбоя.

$query1 = "SELECT EXISTS(SELECT 1 FROM part WHERE partno = :partno)";
$statement1 = $connect->prepare($query1);

$query2 = "INSERT INTO stock (userid, vendorid, partno, partname) 
VALUES (:userid, :vendorid, :partno, :partname)";
$statement2 = $connect->prepare($query2);

$query3 = "INSERT INTO fail (userid, vendorid, partno, partname) 
VALUES (:userid, :vendorid, :partno, :partname)";
$statement3 = $connect->prepare($query3);





foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
{
 $highestRow = $worksheet->getHighestRow();
 for($row=2; $row<=$highestRow; $row++)
 {
   $statement1->execute(
       array(
        ':partno'           =>  $worksheet->getCellByColumnAndRow(0, $row)->getValue()
       )
   );
   if ($statement1=="1"){

        $statement2->execute(
            array(
                ':userid'           =>  $_SESSION['user_id'],
                ':vendorid'         =>  $_SESSION['vendorid'],
                ':partno'           =>  $worksheet->getCellByColumnAndRow(0, $row)->getValue(),
                ':partname'         =>  $worksheet->getCellByColumnAndRow(1, $row)->getValue(),

            )
        );

    }
    else{

        $statement3->execute(
                array(
                    ':userid'           =>  $_SESSION['user_id'],
                    ':vendorid'         =>  $_SESSION['vendorid'],
                    ':partno'           =>  $worksheet->getCellByColumnAndRow(0, $row)->getValue(),
                    ':partname'         =>  $worksheet->getCellByColumnAndRow(1, $row)->getValue(),

                )
            );

        }
 }
} 

Любая помощь приветствуется.Спасибо

1 Ответ

0 голосов
/ 19 февраля 2019

$statement1 - это объект PDOStatement, поэтому вы не можете сравнить его с "1".Вам нужно получить результат запроса и сравнить его с 1. Вы можете сделать это с помощью fetchColumn:

if ($statement1->fetchColumn() == 1) {
...