okay...
Følgende virker i mysql:
- CREATE TEMPORARY TABLE temp_katalog (
- temp_id VARCHAR(13) NOT NULL
- );
-
- INSERT INTO temp_katalog (temp_id)
- SELECT DISTINCT k.katalog_id
- FROM libra_katalog k
- INNER JOIN libra_registered r ON k.katalog_id = r.registered_id
- WHERE r.registered_library_id = '323002'
- AND (
- k.katalog_hovedfelt = '009'
- AND k.katalog_delfelt = 'a'
- AND katalog_datafelt = 'a'
- );
-
- SELECT DISTINCT k.katalog_id
- FROM libra_katalog k
- INNER JOIN temp_katalog t ON k.katalog_id = t.temp_id
- WHERE MATCH(k.katalog_datafelt) AGAINST('sørøvere' IN BOOLEAN MODE);
Men ikke i PHP:
- $libnum = "323002";
- $query = "sørøvere";
- $sql = "CREATE TEMPORARY TABLE temp_katalog (
- temp_id VARCHAR(13) NOT NULL
- );
-
- INSERT INTO temp_katalog (temp_id)
- SELECT DISTINCT k.katalog_id
- FROM libra_katalog k
- INNER JOIN libra_registered r ON k.katalog_id = r.registered_id
- WHERE r.registered_library_id = '$libnum'
- AND (
- k.katalog_hovedfelt = '009'
- AND k.katalog_delfelt = 'a'
- AND katalog_datafelt = 'a'
- );
-
- SELECT DISTINCT k.katalog_id
- FROM libra_katalog k
- INNER JOIN temp_katalog t ON k.katalog_id = t.temp_id
- WHERE MATCH(k.katalog_datafelt) AGAINST('$query' IN BOOLEAN MODE);";
-
- $result = mysql_query($sql);
- while($row = @mysql_fetch_array($result))
- {
- $this->SearchResults[] = $row['k.katalog_id'];
- }
Ovenstående returnerer et tomt SearchResults-array, hvorimod den rene SQL returnerer 28 rækker.
Metoden er afprøvet på et mere simpelt SELECT, så det er umiddelbart ikke PHP-koden, der er noget galt med... eller hvad?
(jeg åbner og lukker self. mySQL-forbindelsen andetsteds i denne kode).
Indlæg senest redigeret d. 26.10.2012 10:42 af Bruger #16927