Paliku tātad tikai pie mysql_real_escape_string(). Paldies.
Nemāku atbildēt uz šo jautājumu :) Tā ir viena no lietām ar ko cīnos, un šķiet, ka pašlaik ir arī izcīnīta.
Maza daļa no mājaslapas ir bilinguāla. Mana vēlme ir pie konkrēta resursa pieprasījuma caur mysql noskaidrot, vai šis resurs ir bilinguāls, un ja nē, tad kura no valodām en vai lv ir pieejama. Attiecīgi notiek tūlītējs redirekts uz pieejamo valodu, ja pieprasītā nav peejama. Nu un tur vēl lapā tālāk, protams, tiek izdrukāts links, piem., "šī lapa pieejama arī latviski", ja pieprasīts en bet lv arī pieejams (nu tas "parastais variants"). (Piezīme - JavaScript lapā neizmantoju un neizmantošu; jā, ar to varētu arī servet bilinguālu kontentu, turklāt pie svičošanās nebūtu jāpārladē lapa. Bet tomēr palieku pie PHP, MySQL, XHTML 1.0 Strict, CSS3. Piedodiet, ja skan spītīgi.)
Tabulā ir lauki valmulti, vallv un valen, kuri ir int tipa, kalpo kā boolen (0||1)
iespējamās vērtības tad nu būtu
projid valmulti vallv valen
dummy 0 1 0
dummy 0 0 1
dummy 1 1 1
Lietotājs prasa $_GET['val'] un $_GET['projid'] un tas mysql vaicājums, par ko tev jautājums ir:
$query = "SELECT val".$val." FROM tabula WHERE projid='".$projid."'"; // piemēram "SELECT vallv FROM tabula WHERE projid='dummy'";
$result = mysql_query($query, $mysql_link) or die (mysql_error());
if(mysql_num_rows($result)) {
$hasVal = (int)mysql_result($result,0,"val".$val); // dabūnam 0 vai 1
if(!$hasVal) {
// tiekot šitik tālu ir skaidrs ka konkrētais resurs eksistē bet valodas nav, momentāli headero'jam uz otru valodu (ja resurs eksistē, tad garantēts, ka 1 valoda būs)
// šis kods ir pašā lapas sākumā, attiecīgi pieņēmu, ka saukt location šeit ir pieņemami no lietotāja viedokļa, jo tas redirekts notiek momentāli
} else {
// Tiekot šeit ir skaidrs, ka resurs pieejams un arī prasītā valoda. BINGO. sākam lasīt ārā visus tekstus utt.
}
else {
// projid pieprasīts neeksistē (jo tas, ka $val būs "lv" vai "en" pirms $query ir garantēts- php kods pirms tam jau tiek galā ar šo mainīgo un izsijā, ja lietotājs cenšas uz savu roku ķibināties ap uri
}
Es jau atkal par tiem "resursiem". Ja es prasītu
$query = "SELECT * FROM tabula WHERE projid='".$projid."'";
tas tak patērētu vairāk laika, lai ielādētu resursu? Man tas šķiet vienalga vai tas ir 1ms vai 10 ms ieguvums, esmu centies kopt šādas lietas rakstot kodu, nedomāju, ka to vajadzētu pazaudēt. Cita lieta ir, ka tavs pārmetums ir kaut kādā veidā MySQL specifisks. Ja tā, tad lūdzu komentē :) Varbūt ir iespējams labāks veids, kā risināt šo situāciju, kur, piemēram, mysql glabājas X resursi (sauksim tos par projektiem), kuram katram ir identifikators projid, un katrs resurs var būt vai nu lv, vai nu en, vai abās val. Lietotājs prasa (tas gan ies caur mod_rewritu vēlāk)
?val=lv&projid=projekts01