Error fatal de PHP: error no detectat: trucada a una funció membre fetch_assoc() en booleà per error – PHP – SitePoint Forums

Hola a tots

Durant la meva vida, no puc esbrinar per què rebo aquest error… l’error és:

[24-Aug-2022 07:29:34 Australia/Sydney] Error fatal de PHP: Error no detectat: crida a una funció membre fetch_assoc() en booleà a /home/client/public_html/shop-product.php:705

El meu codi és:

$productID = $_GET['productID'];

$sql = "SELECT uniqueID FROM product_sizes WHERE productID='" . $productID . "'";
$result = $con->query($sql);

$num_rows = 0;

while($row = $result->fetch_assoc()) { $num_rows ++; } mysqli_free_result( $result );

El codi es connecta a la base de dades correctament, obté la informació de la base de dades correctament i retorna els resultats que estic esperant, però cada vegada que s’executa tinc l’error.

He provat d’eliminar la variable $productID i afegir el productID directament i encara l’error.

Què em perdo?

Qualsevol ajuda seria genial.

senyor Barnes


La vostra taula realment s’anomena product_sizes? L’error significa que la vostra consulta falla. Comproveu l’ortografia dels noms de taules i columnes.

Hola… No crec que sigui la taula… He comprovat… uniqueID és correcte, product_sizes és correcte i productID és correcte… Fins i tot he copiat i enganxat de mySQL per estar segur?

També estic obtenint els resultats que espero?

Intenteu executar la consulta directament a MySQL

Jo també ho he fet i funciona bé… També he provat d’imprimir l’uniquieID a la instrucció while i retorna la informació correcta… però encara rebo el missatge d’error?

També vaig provar d’afegir 111 a cada part de la consulta en cas que hi hagués un conflicte amb un altre codi i encara rebés l’error?

$productID = $_GET['productID'];

$sql111 = "SELECT uniqueID FROM product_sizes WHERE productID='" . $productID . "'";
$result111 = $con->query($sql111);

$num_rows = 0;

while($row111 = $result111->fetch_assoc()) { $num_rows ++; } mysqli_free_result( $result111 );

Afegiu-ho a la part superior del vostre script abans de la trucada de connexió.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

Què et diu ara quan l’executes?
EDITAR: sempre podeu comprovar l’error i us dirà què passa.

Gràcies per la vostra ajuda amb això… Jo també ho he afegit… si només l’afegeixo, no obtinc res… si l’afegeixo com:

$error = mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

while($row = $result->fetch_assoc()) { $num_rows ++; print $error; } mysqli_free_result( $result );

Tinc 10 1 – 1111111111

Estic esperant 10 resultats de la consulta i quan imprimeixo $num_rows n’obté de l’1 al 10 i quan imprimeixo l’únic ID obtinc els ID correctes.

Em pregunto si hi ha cap conflicte amb alguna cosa més a la pàgina?

No us he dit que en feu una variable o que afegiu més codi.

Ho sé… no va resultar en res quan acabo d’afegir el codi… Ara acabo de treure el codi anterior de tot el codi i l’executo i no hi ha cap error al registre d’errors, així que potser el codi és correcte i ho és. rebre un error d’un altre lloc… és possible?

Heu afegit aquesta línia ABANS de la trucada de connexió?

O la línia on es produeix l’error és en un altre lloc o aquest codi està dins d’un bucle que no esteu mostrant a la publicació i la passada final per aquest bucle és quan es produeix l’error.

Per què feu una consulta per obtenir totes les files de dades coincidents només per comptar quantes files hi ha? Només cal que utilitzeu un SELECT COUNT

…consulteu i obteniu el valor del recompte.

Edita: aquest símptoma és típic de la sol·licitud de codi dues vegades, una amb dades i una segona sense. Quin és el codi que sol·licita aquesta pàgina?

[24-Aug-2022 08:38:54 Australia/Sydney] Sí… He trobat un munt de missatges d’error més al meu error_log:
Error fatal de PHP: no detectat mysqli_sql_exception: la taula ‘blanktshirtscom_blanktshirts.size’ no existeix a /home/blanktshirtscom/public_html/shop-product.php:700
Traça de pila: #0
/home/blanktshirtscom/public_html/shop-product.php(700): mysqli->query(‘SELECT uniqueID…’) #1
{mà}

llançat a /home/blanktshirtscom/public_html/shop-product.php a la línia 700

Hi ha un munt de taules a l’error que no existeixen i mai han tingut i no he vist mai?

Gràcies per això… no està en un altre bucle while i originalment havia comptat i també vaig tenir errors.

Corregiu els errors del vostre registre d’errors i, a continuació, aneu a partir d’aquí.

Això és el que estic intentant fer… els nous errors després d’afegir – mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); – no té sentit… és fer referència a taules que no han existit mai enlloc del compte?

He mogut el codi a la part superior de la pàgina i encara tinc l’error, però quan executo el mateix codi en un fitxer net amb només això, no tinc cap error… és possible que alguna altra cosa pugui estar causant això error?

Els errors us indiquen exactament on s’estan cridant a les taules que no existeixen. Corregiu el codi de trucada o afegiu les taules que el codi està buscant. Fins que ho arregles, no té sentit fer res més.

Ara no s’està creant error_log… potser hi ha un problema amb el servidor, ja que feia referència a unes 20 taules que mai no han existit

Per què s’hauria de crear el registre d’errors, ja ho estaves mirant. L’has esborrat? Si és així, haureu de reiniciar Apache. $productID Hauríeu d’utilitzar les declaracions preparades en lloc de concatenar variables a la vostra consulta així. El teu

conté cometes simples? O és un valor numèric, en aquest cas no hauria de tenir cometes al seu voltant en primer lloc. Si fos una declaració preparada, cap d’aquestes coses faria cap diferència.

$num_rows = 0;

while($row = $result->fetch_assoc()) { $num_rows ++; } mysqli_free_result( $result );

Per què tens aquest bucle de codi? $result->num_rowsSi tot el que voleu aconseguir és esbrinar quantes files ha retornat la consulta, per què no utilitzar

tot i que noto que hi ha una distinció entre conjunts de resultats amb memòria intermèdia i sense memòria intermèdia: no faig servir mysqli (prefereixo PDO), així que no sé què significa això. uniqueIDEn qualsevol cas, si es diu la teva columna

segur que obtindreu zero o un resultat de la consulta?

Leave a Comment

Your email address will not be published. Required fields are marked *