Autor Zpráva
kůň
Profil *
Ahoj,

prosím, poraďte někdo, už jsem zkusil všechno...

Mám sloupec typu INTEGER(5), kde ukládám věk osoby. Potřeboval bych zde umět uložit také prázdný řetězec, ale vždy když uložím prázdný řetězec, přepíše se mi v databázi na nulu.

Nevíte někdo, jak by to mohlo jít?

Mockrát děkuju
Kajman_
Profil *
Vkládejte null místo prázdného řetězce. Sloupec ale musí mít povolené null hodnoty.
kůň
Profil *
Kajman:
Děkuju za reakci.

mám ve skriptu:

$jmeno_vek = NULL;


tuto hodnotru následně uložím do databáze.

Když databázi otevřu, je tam nula ("0"). Sloupec je zadán jako:

`jmeno_vek` int(5) default NULL,
kůň
Profil *
Dal jsem sloupec s věkem jako varchar(5). Sice mi to přijde trochu jako "prasácké" řešení, ale jinak mi to nešlo..
Kajman_
Profil *
Ukažte přesný insert nebo udpate, který to dělá... tipnul bych, že vkládáte řetězec 'NULL' místo speciální hodnoty NULL.
kůň
Profil *
Kajman:


if ($p_jmeno <> '')	
  {
  $p_jmeno_vek = NULL;
  }


//Uložení dat do databáze
$insert = array(
'spolecnost' => $p_spolecnost,
'jmeno' => $p_jmeno,
'jmeno_vek' => $p_jmeno_vek,
'jmeno_ubytovani' => $p_jmeno_ubytovani,
atd .......
);
				
$db->insert(TABLE_PARTY_UCASTNICI, $insert);


A pak mám funkci pro to vkládání:

function insert($table, $arrayValues = array())
{
   $values='';
   foreach ($arrayValues as $key => $value)
   	{
	if ($value==='null')
    	$values.= "null, ";
	elseif ($value===0)
    	$values.= "0, ";
	elseif ($value=='now')
    	$values.= "now(), ";
	else
		{
		$values.="'$value', ";
		}
	}
  $values = substr($values, 0, -2);
  $this->query("INSERT INTO $table (" . implode(", ", array_keys($arrayValues)) . ") VALUES (".$values.")");
}


Jedině že by to kazila ta funkce, to jsem úplně netestoval, ale přijde mi to hodně nepravděpodobné..
Kajman_
Profil *
V té funkci ale očekávate v php řetězec 'null'.

$p_jmeno_vek = 'null';
kůň
Profil *
Kajman:
Aha, máte pravdu.. Ta funkce není moje, psal ji jiný programátor, ani mě nenapadlo ji tak zkoumat.. Tak moc díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0