and6412 pisze:
puszczam do bazy nastepujace zapytanie w transakcji z php:
Kod:
$query_result=mysql_query("
begin;
insert into users (user_id,login, first_name,surname) VALUES (".$wiersz[0].",'".$_POST['login']."','".$_POST['firstname']."','".$_POST['surname']."');
insert into passwords (user_id,pass) VALUES (".$wiersz[0].",md5('".$_POST['pass1']."'));
commit;
");
Zero błędu, zero ostrzeżenia, ale dane się nie wpisują. Transakcja prawdopodobnie zadziałała gdyż w bazie nie pojawia się żaden z 2 rekordów.
Spróbowałbym w ten sposób:
____________________________________________________________
//Przypisanie zmiennych tablicowych do zmiennych zdefiniowanych
$u_id = $wiersz[0]; //INT
$login = $_POST['login']; //VARCHAR(xx) lub TEXT
$f_name = $_POST['firstname']; //VARCHAR(xx) lub TEXT
$s_name = $_POST['surname']; //VARCHAR(xx) lub TEXT
$pass = $_POST['pass1']; //VARCHAR(xx) lub TEXT
//Tam gdzie pole jest INT można pominąć apostrofy ($u_id)
$query="insert into users (user_id, login, first_name, surname) VALUES ($u_id, '$login', '$f_name', '$s_name')";
$result = mysql_query($query);
$query_passwd = "insert into passwords (user_id,pass) VALUES ($u_id, md5('$pass'))";
//lub
$query_passwd = "insert into passwords (user_id,pass) VALUES ($u_id, PASSWORD('$pass'))";
$result_passwd = mysql_query($query_passwd);
_______________________________________________________
W niektórych wersjach PHP zamiast "$_POST['cos_tam']" może być konieczne użycie "$HTTP_POST_VARS['cos_tam']. Osobiście używam tej drugiej opcji.
Przytoczony przez Ciebie sposób mógł nie zadziałać ze względu na użycie apostrofów (') zarówno w definicji kwerendy, jak również w zmiennych sesyjnych oraz POST (tablicowych).