Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    MySQL è davvero "apici sensitive" ??

    Di stranezze nei miei anni di programmazione ne ho viste tante, ma questa le batte tutte...

    Se utilizzo questa query, con gli apici verticali, lo script non funziona correttamente

    Codice PHP:
    $query="SELECT link, descrizione, genere
    FROM 'link'
    WHERE 'link' LIKE '%
    {$link}%' AND
    'descrizione' LIKE '%
    {$descrizione}%' AND
     'genere' LIKE '%
    {$genere}%'  "
    mentre se cambio gli apici da verticali ad obliqui attorno ai campi nella lista FROM e WHERE, ecco che funziona tutto a meraviglia

    Codice PHP:
    $query="SELECT link, descrizione, genere 
    FROM `link` 
    WHERE `link` LIKE '%
    {$link}%' AND 
    `descrizione` LIKE '%
    {$descrizione}%' AND 
    `genere` LIKE '%
    {$genere}%'  "
    Ma com'è possibile?

    Che MySQL sia "apici sensitive"? :master:

  2. #2
    E' il comportamento corretto. Nella prima query sbagliavi l'utilizzo del singolo apice al posto del backticks per la delimitazione dei nomi dei campi e delle tabelle.

  3. #3
    perché, semplicemente, non sono "apici" ...

    quelli che hai usato nella seconda query sono backtick

    Gli apici, mysql, cosi come qualsiasi altro rdbms, li usa per identificare le stringhe e quindi non li puoi usare per i campi che sono oggetti, elementi

    Anche per il semplice motivo che

    WHERE 'link' LIKE '%testo%'

    vuol dire: cercami testo dentro link

    Ad esempio access, msde, sql server e co utilizzano le [] al posto del backtick per gli oggetti/elementi
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    Ecco, ho dimenticato di dirvi una cosa importante....

    QUESTA query invece funziona bene, SENZA apici intorno ai campi
    Codice PHP:
    $queryUpdate="UPDATE link
    SET Link='
    {$linkCorretto}'
    WHERE Link='
    {$riga['link']}'"
    Perchè qui non dà problemi?
    Capite che io, povero programmatore php in erba, sono disorientato povera stella...

  5. #5
    ma non sono apici!!!!!

    Sono backtick ... e non sono obbligatori!

    Scrivere
    UPDATE link SET .......

    è uguale a scrivere
    UPDATE `link` SET .......

    ma se ti causano confusione non li usare ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    Cavolo, solo adesso mi rendo conto che in effeti non sono obbligatori, io avevo capito provando vare combinazioni che fossero obbligatori questi backtick !

    Grazie Daniele, mi hai sconvolto!

  7. #7
    Originariamente inviato da scrittore80
    Cavolo, solo adesso mi rendo conto che in effeti non sono obbligatori, io avevo capito provando vare combinazioni che fossero obbligatori questi backtick !

    Grazie Daniele, mi hai sconvolto!
    I backtick sono obbligatori quando utilizzi parole riservate o altri caratteri riservati per indicare che sono parte di un nome e non svolgono la funzione riservata.

    Ma e' una c****ta usare le parole riservate in modo improprio.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.