---
title: "Får ej ut något på till synes självklar SQL-fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/191285-får-ej-ut-något-på-till-synes-självklar-sql-fråga"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "prplxr"
published: "2013-04-11T10:53:58.000Z"
updated: "2013-04-11T14:47:25.000Z"
replies: 8
views: 799
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/191285-får-ej-ut-något-på-till-synes-självklar-sql-fråga"
---

# Får ej ut något på till synes självklar SQL-fråga

## #1 — prplxr, 2013-04-11T10:53Z

Suck, nu har man kört fast igen. Det är säkert något jag råkat missa, men jag behöver ett par extra ögon för att hitta det.

Kod:

```php
	$keywordsFound = FALSE;
	
	$sql2 = "SELECT * FROM tblkeywords WHERE cid = $id";
	$query2 = $conn -> Prepare($sql2);
	$query2 -> Execute();
	$row2 = $query2 -> Fetch();
	
	if($query2 -> RowCount() > 0) {
		$keywordsFound = TRUE;
		$key1 = $row2['key1'];
		$key2 = $row2['key2'];
		$key3 = $row2['key3'];
		$key4 = $row2['key4'];
		$key5 = $row2['key5'];
	};
```

Önskat resultat är att $keywordsFound blir TRUE och att värde hämtas ur tabellen till variablerna enligt koden ovan. Detta sker inte. Väljer jag att kommentera bort allt som har med $keywordsFound och RowCount() att göra så får jag ändå inte något värde i variablerna.

Har kört SQL-frågan för sig i HeidiSQL och där får jag ut rätt värden.
$id har förväntat värde.

Vad missar jag? :S

Permalänk: https://www.webforum.nu/p/191285

## #2 — Nate.A, 2013-04-11T11:46Z

Hej!
Vad använder du för databas klass, är det någon form av mysqli wrapper?

Permalänk: https://www.webforum.nu/p/2308647

## #3 — nitro2k01, 2013-04-11T12:15Z

prepare, execute, fetch och rowCount ska väl börja med liten bokstav?

Permalänk: https://www.webforum.nu/p/2308650

## #4 — prplxr, 2013-04-11T12:45Z

> **[Nate.A skrev:](https://www.webforum.nu/p/1559461)**
>
> Hej!
> Vad använder du för databas klass, är det någon form av mysqli wrapper?

Det är PDO. Nej, det är ingen mysqli wrapper.

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1559464)**
>
> prepare, execute, fetch och rowCount ska väl börja med liten bokstav?

Det har ingen betydelse i PHP. Anledningen till att jag gör så är för att jag helt sonika tycker det ser snyggare ut.

Permalänk: https://www.webforum.nu/p/2308651

## #5 — @nders, 2013-04-11T13:21Z

Du är säker på att $id innehåller det du tror?

för övrigt borde väl raden 

```php
$row2 = $query2 -> Fetch();
```

ligga inne i if-satsen?

Permalänk: https://www.webforum.nu/p/2308652

## #6 — prplxr, 2013-04-11T13:36Z

> **[@nders skrev:](https://www.webforum.nu/p/1559466)**
>
> Du är säker på att $id innehåller det du tror?

Yes. 100% säker. Har skrivit ut både $id och $sql2 och de innehåller precis det jag förväntat mig.

> **[@nders skrev:](https://www.webforum.nu/p/1559466)**
>
> för övrigt borde väl raden 
>
> ```php
> $row2 = $query2 -> Fetch();
> ```
>
> ligga inne i if-satsen?

Det har egentligen ingen betydelse. Även om man bara får tillbaka ett tomt recordset så kommer den aldrig försöka nå några värden som inte existerar.

Men för att vara på den säkra sidan har jag givetvis testat, med samma resultat oavsett.

Permalänk: https://www.webforum.nu/p/2308653

## #7 — nitro2k01, 2013-04-11T14:14Z

> **[prplxr skrev:](https://www.webforum.nu/p/1559465)**
>
> Det har ingen betydelse i PHP. Anledningen till att jag gör så är för att jag helt sonika tycker det ser snyggare ut.

Tydligen är det så. Då har jag lärt mig något nytt idag. Men urk, så ska inte ett språk vara konstruerat. (Dvs att variabler är skiftlägeskänsliga medan funktionsnamn inte är det.) Jag anser personligen att stor begynnelsebokstav ska vara reserverat för klassnamn i objektbaserade språk. Men smaken är som baken, alla andras luktar illa.

Vad sägs om lite felhantering?

```php
    $keywordsFound = FALSE; 
     
    $sql2 = "SELECT * FROM tblkeywords WHERE cid = $id"; 
    $query2 = $conn -> Prepare($sql2); 
    if(!$query2){
        echo "Error in prepare!";
        print_r($conn->errorInfo());
    }
    $executeSuccess = $query2 -> Execute(); 
    if(!$executeSuccess){
        echo "Error in execute!";
        print_r($query2->errorInfo());
    }

    $row2 = $query2 -> Fetch(); 
    if(!$row2){
        echo "Error in fetch!";
        print_r($query2->errorInfo());
    }
     
    if($query2 -> RowCount() > 0) { 
        $keywordsFound = TRUE; 
        $key1 = $row2['key1']; 
        $key2 = $row2['key2']; 
        $key3 = $row2['key3']; 
        $key4 = $row2['key4']; 
        $key5 = $row2['key5']; 
    };
```

Permalänk: https://www.webforum.nu/p/2308654

## #8 — prplxr, 2013-04-11T14:44Z

Nu börjar vi komma någon vart!

```
Cannot execute queries while other unbuffered queries are active.  Consider using PDOStatement::fetchAll().  Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
```

Ska klura vidare på detta och se vilken lösning som blir smidigast. Tack för tipset!

Permalänk: https://www.webforum.nu/p/2308655

## #9 — prplxr, 2013-04-11T14:47Z

Har löst det nu! Hade två frågor i "samma fråga" längre upp i koden och den andra hade inte körts. Såg till att den kördes först och sedan fungerade det finfint!

Permalänk: https://www.webforum.nu/p/2308656

---

Tråden på webben: https://www.webforum.nu/amne/php/191285-får-ej-ut-något-på-till-synes-självklar-sql-fråga
