Autor | Zpráva | ||
---|---|---|---|
Jiří Ráb Profil |
#1 · Zasláno: 29. 10. 2018, 20:08:01
Ahoj chtěl jsem se vás zeptat jak převést lastInsertId, který mi vrací string na integer abych ho mohl vložit do tabulky (jako foreign key).Dík
|
||
Keeehi Profil |
#2 · Zasláno: 29. 10. 2018, 23:07:26
$id = (int)($db->lastInsertId()); |
||
Jiří Ráb Profil |
#3 · Zasláno: 30. 10. 2018, 08:10:58
Tak jde o to že pokud mi lastInsertId vrátí hodnotu jako string tak já ji nemůžu zapsat do tabulky kde je int foreign key
|
||
Keeehi Profil |
#4 · Zasláno: 30. 10. 2018, 08:37:43
Jiří Ráb:
Jenže do databáze se posílá celý dotaz jako jeden řetězec, ne? Takže ty vezmeš string, přetypuješ ho na int a předáš ho PDO. To ten tvůj int vezme, přetypuje ho zpátky na string a připojí ho ke stringu s dotazem. |
||
Jiří Ráb Profil |
#5 · Zasláno: 30. 10. 2018, 22:09:17
no to jsem zkoušel přetypovat ten lastinsertid() na int jak jsi napsal jenže pořad je to string hodnota a tu nebere pdo když to poslu
|
||
pcmanik Profil |
Jiří Ráb:
Ukáž ako to posielaš, PDO je úplne jedno či tam posielaš string alebo int. Databáza sa o správne pretypovanie postará. Preto aj napr. funguje vkladanie čísiel v SQL ako INSERT INTO ... VALUES ('50') a tiež aj VALUES (50). |
||
Keeehi Profil |
#7 · Zasláno: 30. 10. 2018, 22:49:17
var_dump($id); |
||
Jiří Ráb Profil |
$insert_adress="INSERT INTO adresa(ulice,cp,mesto,psc) VALUES (:ulice,:cp,:mesto,:psc)"; $insert_prepare_adress=$connect->prepare($insert_adress); $insert_prepare_adress->bindParam(":ulice",$ulice); $insert_prepare_adress->bindParam(":cp",$cp); $insert_prepare_adress->bindParam(":mesto",$mesto); $insert_prepare_adress->bindParam(":psc",$psc); $adresa_stav=$insert_prepare_adress->execute(); $last_id=(int)$connect->lastInsertId(); if($adresa_stav==true){ try{ $insert_user="INSERT INTO uzivatele(username,heslo,email,krestni_jmeno,prijmeni,pravo,id_adresa) VALUES(:username,:heslo,:email,:krestni_jmeno,:prijmeni,:pravo,:last_id)"; $insert_prepare_user=$connect->prepare($insert_user); $heslo_hash=password_hash($pass1,PASSWORD_DEFAULT); $insert_prepare_user->bindParam(":username",$username); $insert_prepare_user->bindParam(":heslo",$heslo_hash); $insert_prepare_user->bindParam(":email",$email); $insert_prepare_user->bindParam(":krestni_jmeno",$name); $insert_prepare_user->bindParam(":prijmeni",$surname); $insert_prepare_user->bindParam(":pravo",$pravo); $insert_prepare_user->bindParam(":ulice",$ulice); $insert_prepare_user->bindParam(":cp",$cp); $insert_prepare_user->bindParam(":mesto",$mesto); $insert_prepare_user->bindParam(":psc",$psc); $insert_prepare_user->bindParam(":last_id",$last_id); $uzivatel_stav=$insert_prepare_user->execute(); }catch (PDOException $e){ $error_message=$e->getMessage(); $delete="DELETE FROM adresa ORDER BY id_adresa desc limit 1"; $connect->query($delete); header("Location:registrace.php?errors=$error_message&username=$username&firstname=$name&surname=$surname&ulice=$ulice&cp=$cp&mesto=$mesto&psc=$psc"); exit(); } nechapu proč mi to databaze nechce vzít SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokensstring tahle chyba to je pokud dam na last_id gettype vrací string |
||
Beavis Profil |
#9 · Zasláno: 31. 10. 2018, 00:00:16
Jiří Ráb:
Ale ta chyba se přeci vůbec netýká typu $last_id. |
||
Keeehi Profil |
#10 · Zasláno: 31. 10. 2018, 00:33:51
Beavis:
Jinak řečeno, binduješ parametry které vůbec nemáš v dotazu. V dotazu jich máš jen 7 ale snažíš se jich přidat 11. |
||
Jiří Ráb Profil |
jak je to možný
díky za radu už to vidím |
||
Časová prodleva: 5 let
|
0