Toon posts:

[PHP] PDO & Prepared SQL statements met variabelen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hi,

Ik probeer het volgende te repliceren d.m.v PHP met PDO:

http://sqlfiddle.com/#!9/0a068/1

Helaas krijg ik het onder geen manier werkend, bijv:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
     global $PDO;
     
     try {
     $query1 = "SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pa.fieldname = ''',
      fieldname,
      ''', pa.fieldvalue, NULL)) AS ',
      fieldname
    )
  ) INTO @sql
FROM product_additional";

     $stmt1 = $PDO->prepare($query1);
     $stmt1 = $stmt1->execute();

     $query2 = "SET @sql = CONCAT('SELECT p.id
                    , p.name
                    , p.description, ', @sql, ' 
                   FROM product p
                   LEFT JOIN product_additional AS pa 
                    ON p.id = pa.id
                   GROUP BY p.id');";
     $stmt2 = $PDO->prepare($query2);
     $stmt2 = $stmt2->execute();
       print_r($stmt2->debugDumpParams(), true);
} catch (PDOException $e) {
    echo "Exeption: " .$e->getMessage();
    $stmt2 = false;
}


Of als oorspronkelijk
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
global $PDO;
     
     try {
     $query2 = "SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pa.fieldname = ''',
      fieldname,
      ''', pa.fieldvalue, NULL)) AS ',
      fieldname
    )
  ) INTO @sql
FROM product_additional;

SET @sql = CONCAT('SELECT p.id
                    , p.name
                    , p.description, ', @sql, ' 
                   FROM product p
                   LEFT JOIN product_additional AS pa 
                    ON p.id = pa.id
                   GROUP BY p.id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;";
     $stmt2 = $PDO->prepare($query2);
     $stmt2 = $stmt2->execute();
       print_r($stmt2->debugDumpParams(), true);
} catch (PDOException $e) {
    echo "Exeption: " .$e->getMessage();
    $stmt2 = false;
}


Kan bovenstaande uberhaupt via PDO m.b.t werken met SQL variabelen en/of de meerdere queries (wat in eerste posting opgelost zou moeten zijn)?

Acties:
  • 0 Henk 'm!

  • Velguador
  • Registratie: September 2010
  • Laatst online: 07-10 16:41
Hoi Computeraap,

Om eerst maar wat van de standaard-vragen uit de weg te krijgen:
Werken de queries wel goed? Kunnen ze worden uitgevoerd buiten PDO om, in een extern programma bijvoorbeeld?
Krijg je bepaalde foutmeldingen of iets anders terug?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het in de volgende database tools gerunned: phpmyadmin (webapp) en Sequel Pro (wysiwig osx app), daar werkt het probleemloos. Zaken als quotes escapen en het in volgorde executen etc ook geprobeerd, maar helaas. Ik krijg bij sommige pogingen wel een algemene foutmelding terug over een non-object bij de result array, maar daarvoor niets (geen exceptions).