Jump to content
php.lv forumi

Mysql query


Recommended Posts

Posted

mysql_query('use '.$db_name.';');
$result = mysql_query('select type from map where X = '.$_GET['x'].' && Y = '.$_GET['y'].' limit 1;');
$r = mysql_fetch_array($result);
if (!empty($r[0])) {
switch ($r[0]):
 case 'grass':echo '<a href="#" onclick="ajax_loadContent(\''.$_GET['x'].','.$_GET['y'].'\',\'mapterrain.php?x='.$_GET['x'].'&y='.$_GET['y'].'&flip=1\');return false"><img src=\'style/terrain/grass.gif\'></a>'; break;
endswitch;	  
	} else {
	 mysql_query('insert into map values('.$_GET['x'].','.$_GET['y'].', "grass", null, 0);');
	}

Kaut ka lietoju šitādus murgus man jau zb! Nav tur tanī php līdz galam kaut kas izdomāts!

 

Ko man vajag ir apmēram šis

 

$result = mysql_query('select type from map where X = '.$_GET['x'].' && Y = '.$_GET['y'].' limit 1;');

if type nav tukš {

 

}

 

Ka to izdarīt ātrākajā veidā ? Bez nekādiem mysql_fetch_array un citas šņagas! Un tā lai nebūtu errori notice un citas figņu! Kāpēc kaut kāda bernu spēļu serveri mysql ir uztaisīts normālā valodā ,bet php ir šitā liekā figņas... uhh ^_^

Posted

Nevis php "kautkas nav izdomāts", bet gan tu pats savā kodā neesi kautko izdomājis līdz galam:

 

mysql_query("use $db_name");
$x = mysql_real_escape_string($_GET['x']);
$y = mysql_real_escape_string($_GET['y']);
$result = mysql_query("select type from map where X = '$x' and Y = '$y' limit 1');
if ($r = mysql_fetch_array($result))
{
if ($r[0] == "grass")
{
	echo "<a href blabla...";
}
}
else
{
mysql_query("insert into map values('$x', '$y', 'grass', null, 0)");
}

Vēl tikai pirms tam vajag pārbaudīt vai isset($_GET['x']) (arī ar 'y') un attiecīgi kautkādu defaulto vērtību iebāzt (vai arī neizpildīt šo kodu)

Un izdomā lūdzams topikam sakarīgāku nosaukumu, citādi sagaidīsi vienvirziena ceļu uz Drazu...

Posted
if ($r = mysql_fetch_array($result))

 

Tas nozime ka tur jau ir parbaude isempty? Hmm.. ko tur prasit jaizmegina sadu panemienu nebiju redzejis...

Tik un ta uzkatu ka php ir biki parmurgots es daudzam lietam redzu labakus coda risinajumus!

 

p.s. nav garumzimes :D

Posted
Tas nozime ka tur jau ir parbaude isempty?

Nē, ne gluži. Ar isempty tur nav nekāda sakara (kas vispār ir isempty?)

Kods:

if (xxx)

ir ekvivalents kodam:

if (!!(xxx))

 

lai arī kas būtu xxx vietā.

Ja mysql_fetch_array atgriež NULL (respektīvi selekts nav izselektējis nevienu rindu), tad !!NULL būs vienāds ar false, un if zars neizpildīsies.

 

Bet tiešām - padalies ar tiem "labākiem risinājumiem".

Posted (edited)

scp loop

[function web_market_transfer_items]
db.query "select itemuid,buyuid from sphere_market where not isnull(buyuid)"
for r 0 <eval <db.row.numrows>-1>
 if <db.row.numrows>
  uid.<db.row.<dlocal.r>.0>.cont = <uid.<db.row.<dlocal.r>.1>.findlayer.29.uid>
  uid.<db.row.<dlocal.r>.1>.sysmessage <uid.<db.row.<dlocal.r>.0>.name> delivered.
 endif	
end
db.query "delete from sphere_market where not isnull(buyuid)"

 

scp query 1 parametram

db.query "select itemuid from sphere_market where not isnull(buyuid) limit 1"
<db.row.0.0>

 

un viss nekadu lieku figņu! :) <db.row.0.0> ir rezultāts!

Edited by Wuu
Posted

Nu tikpat labi jau php arī kverija rezultāta pirmās rindas pirmo lauku (ja to dara tavs <db.row.0.0>) var dabūt ar vienu fjas izsaukumu:

$res = mysql_query("SELECT blabla");
echo mysql_result($res, 0, 0);

un nekādu lieku figņu!

 

Ja godīgi, tad es neredzu, ar ko tavs piemērs ir labāks par prastu php funkciju mysql_query, fetch_row, un tml izsaukšanu (ja nu vienīgi sintaksē ietaupās daži baiti). Idejiski tieši tas pats notiek.

Posted

C'mon precīzi gandrīz tas pats, tikai sintakse cita. Pat sarežģītāk (imo).

 

Man tagad jautājums - ja tev vajadzētu iekš tā if'a izpildīt katru reizi vēl kādu citu kveriju ?

Posted (edited)

comon php dod errorus visu laiku ,bes empty neiztikt!

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/newweb/mapterrain.php on line 11

if ($r = mysql_fetch_array($result))

 

Rrrrr...

 

lai butu viss ciki briki un vienu parametru dabūtu ārā kodam jaizkatās šādi!

 

$result = mysql_query('select type from map where X = '.$_GET['x'].' && Y = '.$_GET['y'].' limit 1;');
if (!empty($result)){
$r = mysql_fetch_array($result);
 if (!empty($r[0])) {
 echo '<a href="#... 
} else {
mysql_query('insert into map values('.$_GET['x'].','.$_GET['y'].', "ocean", null, 0);');
} 
} else {
mysql_query('insert into map values('.$_GET['x'].','.$_GET['y'].', "ocean", null, 0);');
}

 

Divreiz emty parbaude WTF!

Edited by Wuu
Posted
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/newweb/mapterrain.php on line 11

Doh.. Šī rindiņa nozīmē tikai to, ka php tev saka, ka tu padot invalīdu handli fetch_array funkcijai. Invalīds handlis rodas tāpēc, ka tavis uzrakstītajā SQL kverijā ir kļūda, tāpēc tas nav izpildīts.

PHP tur neko nevar padarīt, ka nemāki SQL kverijus korektus uzraktīt ;)

A kur SQL kverijā ir kļūda, to jau tev andrisp pateica kā noskaidrot.

 

Iesācējam mysql kverijus ir vislabāk rakstīt šādā formā:

$result = mysql_query("...") or die(mysql_error());

Tad uzreiz redzēsi, ka un kāda ir kļūda.

Posted (edited)

nav tur kļūdas kods strādā!

Met āra kļūdu kad $result ir tukš! Un jūs ieteiktais ifs... Ja pirms tam pārbauda ar empty viss ir ok!

if ($r = mysql_fetch_array($result))

Edited by Wuu
Posted

Wuu, piedod, bet tu laikam esi idiots, ja saki, ka tur nav kļūda, kaut acīm redzami tur ir kļūda. Pats taču vēl tikko rādīji:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/newweb/mapterrain.php on line 11
Posted

Wuu: empty jau tieši tev pārbauda - vai nav kļūda, un ja nav, tikai tad tu izpildi mysql_fetch_array.

Tāpēc - protams, ka bez empty tas fetch_array izmetīs to Warningu - tāpēc, ka tev ir kļūda kverijā.

Uzliec to mysql_error() izvadīšanu, pats redzēsi skaidri un gaiši.

 

Varbūt tev der pamācīties php pamatus kādā iesācēju tutoriālī, citādi izskatās, ka tu nezini, ko pats tur dari.

×
×
  • Create New...