{"id":230730,"date":"2022-11-29T12:59:00","date_gmt":"2022-11-29T09:59:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230730"},"modified":"2022-11-09T23:43:59","modified_gmt":"2022-11-09T20:43:59","slug":"utilizzo-di-sprintf-e-like-nelle-query-sql-in-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-di-sprintf-e-like-nelle-query-sql-in-wordpress\/","title":{"rendered":"Utilizzo di sprintf e LIKE nelle query SQL in WordPress"},"content":{"rendered":"<p>Quando si lavora con le query in WordPress, \u00e8 sempre meglio <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/prepare\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preparare<\/a> la query prima di eseguirla; tuttavia, se ti capita di interfacciarti con un&#8217;API di terze parti o di lavorare con un&#8217;altra variante di SQL (come Transact-SQL), le cose potrebbero funzionare in modo leggermente diverso.<\/p>\n<p>Se solo i database fossero davvero cos\u00ec ordinati.<\/p>\n<p>Il <strong>TL; DR<\/strong> di tutto questo \u00e8 che la gestione di <a href=\"https:\/\/php.net\/manual\/en\/function.sprintf.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sprintf<\/a> e <strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/language-elements\/like-transact-sql?view=sql-server-2017\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">LIKE in T-SQL<\/a><\/strong> richiede una gestione strategica. E l&#8217;esempio di codice nella sezione successiva dovrebbe fornire tutto ci\u00f2 di cui hai bisogno.<\/p>\n<h2>sprintf e LIKE in SQL<\/h2>\n<p>Alcuni retroscena sul problema in questione:<\/p>\n<p>Supponiamo che tu stia lavorando a un progetto in cui stai effettuando chiamate a un&#8217;API di terze parti e la suddetta API utilizza T-SQL per interfacciarsi con il suo database.<\/p>\n<p>Inoltre, supponiamo che tu voglia recuperare record che hanno un segmento della stringa da interrogare (sai, una clausola <strong>LIKE ,).<\/strong> L&#8217;avvertenza \u00e8 che non puoi utilizzare la funzione di <strong>preparazione<\/strong> standard fornita da WordPress, quindi scegli di utilizzare <strong>sprintf<\/strong> per aiutare a disinfettare le informazioni in arrivo.<\/p>\n<p>Poich\u00e9 <strong>sprintf<\/strong> utilizza <code>%s<\/code>per le stringhe e poich\u00e9 stai utilizzando una clausola <strong>LIKE<\/strong><code>%<\/code> che richiede anche, come si gestisce il caso di utilizzo di entrambi?<\/p>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/b4d5a391024b151667fe99f5bd913544#file-00-get-user-by-last-name-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ecco un esempio<\/a><\/strong> di come potrebbe funzionare per te:<\/p>\n<pre><code>&lt;?php\n\/**\n * Queries a third-party API using sprintf and a LIKE clause to retrieve the users \n * with a last name like the specified argument.\n * \n * @param string $lastName An unsanitized version of the user's last name.\n *\/\npublic function getUserByLastName(string $lastName)\n{\n    \/\/ Sanitize the argument as you see fit here.\n\n    $query = sprintf(\"\n        SELECT FIRST_NAME, LAST_NAME\n        FROM USERINFO\n        WHERE LAST_NAME LIKE '%%%s%%'\n    \", $lastName);\n\n    \/\/ Make a query to the third-party API here.\n}\n<\/code><\/pre>\n<p>Ovviamente, penso ancora di usare un qualche tipo di evasione <code>$name<\/code>sull&#8217;argomento, ma ci sono diversi modi per farlo ed \u00e8 oltre lo scopo di questo post.<\/p>\n<p>In breve, prefisso e suffisso <code>%s<\/code>con <code>%%<\/code>e dovresti essere a posto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La gestione di sprintf e LIKE in T-SQL richiede una gestione strategica ed ecco come farlo.<\/p>\n","protected":false},"author":1,"featured_media":163659,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[720,844,865],"tags":[1168],"class_list":["post-230730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=230730"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230730\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/163659"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}