Jump to content
php.lv forumi

Dinamisks kverijs


daGrevis

Recommended Posts

Sveiki... =)

 

Problēma! Nepieciešams, lai uz datubāzi tiek nodotas attiecīgās vērtības tikai tad, ja tās ir "set'otas". Tad nu isSet(), bet lūk, PHP kas nepatīk manai sintaksei. =D īstenībā, tas kā uz ātro, pašam nepaīk - ļoti nepārskatāmi... =(

 

mysql_query('

INSERT INTO `users` (`username`, `password`, `mail`, `time`"' if(isSet($_POST['gender'])) { '" , `gender` "' } if(isSet($_POST['country'])) { '" , `country` "' } '")
VALUES ("' . mysql_real_escape_string($_POST['username']) . '", "' . mysql_real_escape_string(sha1($_POST['password'])) . '", "' . mysql_real_escape_string($_POST['mail']) . '", "' . time() . '", "' . mysql_real_escape_string($_POST['gender']) . '", "' . mysql_real_escape_string($_POST['country']) . '")

') or die(mysql_error());

 

P.S. Par otro rindiņu, t.i. sākot no "VALUES...", nemaz neskatieties - tur nesāku likt savus isSet(), jo kļūdu jau met iepriekšējā rindiņā.

 

Parse error: syntax error, unexpected T_IF in C:\xampp\htdocs\bliss\do__register.php on line 83

 

Pats zinu, ka galīgi "freak'aini" izskatās. =D Kā būtu pareizi? =)

Link to comment
Share on other sites

Izskatās tiešām drausmīgi. :D

Cik zinu, tad IFoties, veidojot stringu, nemaz nevar - domāju, ka par to arī viņš lamājas.

 

Ieteiktu veidot savādāk:

Piemēram, saveido no sākuma divus mainīgos $fields un $values atkarībā no tā, kādu dati ir jāinserto, pēc tam uzbūvē to vaicājumu.

mysql_query("INSERT INTO 'users' ($fields) VALUES ($values)");

Link to comment
Share on other sites

Pag, bet nu jā, iznest jau tos IF'us nav problēma, bet, ja mainīgais nav "set'ots", tad nevar jau palikt tā... (ja $_POST['gender'])

 

INSERT INTO `users` (`username`, `password`, `mail`, `time`, `gender`, `country`)
VALUES ("' . mysql_real_escape_string($_POST['username']) . '", "' . mysql_real_escape_string(sha1($_POST['password'])) . '", "' . mysql_real_escape_string($_POST['mail']) . '", "' . time() . '", "' . mysql_real_escape_string($_POST['gender']) . '", "' . mysql_real_escape_string($_POST['country']) . '")

Link to comment
Share on other sites

$q="blaa blaa blaa ".c?('gender'):('')." blaa blaa blaa"; un viss darbosies

bet tas ir nepārskatāmi.

 

$vars = array('gender','mail','country');

$str1='';

$str2='';

foreach($vars as $var){

if(isSet($_POST[$var])){$str1.='gender';$str2="'.$_POST[$var].'";}

}

 

$q="INSERT INTO tabula (".join(', ',$str1),') VALUES ('.join(', ',$str2).');';

Link to comment
Share on other sites

Ko tas dos? Tikai lieks resursa tēriņš. Šķiet...

 

Resursu tēriņš :D :D :D

 

 

<?php
$name = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string(sha1($_POST['password']));
$mail = mysql_real_escape_string($_POST['mail']);

$gender = isset($_POST['gender']) ? mysql_real_escape_string($_POST['gender']) : false;
$country = isset($_POST['country']) ? mysql_real_escape_string($_POST['country']) : false;

$query = "
       INSERT INTO users(
		username,
		password,
		mail,
		time"
		. ($gender ? ", gender" : "")
		. ($country ? ", country" : "") . "
       VALUES (
		'$uname',
		'$pass',
		'$mail',"
		. time() 
		. ($gender ? " , '$gender'" : "")
		. ($country ? " , '$country'" : "");

if(mysql_query($query)){
	echo "Veiksmīgi pievienots!";
}else{
	echo "Error: " . mysql_error();
}
?>

Edited by briedis
Link to comment
Share on other sites

Cepums Tev, atkal! =)

 

Nevajag vienkāršas lietas sarežģīt. Nevajag arī čupu ar dažādām darbībām samačkāt vienā blāķī.

Raksti tā, lai ir viegli uztverams, uzreiz saprotams, kas tur īsti notiek.

 

Nav tā, ka jo īsāks kods, jo labāks....

Link to comment
Share on other sites

Ja vien ar vienu insertu netaisies ievietot n ierakstus, tad iesaku padomāt par šāda pieraksta izmantošanu:

 

INSERT INTO tablename SET field1=value1, field2=value2;

 

No php puses būvējot tas būs daaaaudz vienkāršāk.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...