2014-12-19 2 views
0

привет, хочу создать приложение для регистрации и лотереи с php Я хочу сделать идентификатор пользователя в таблице при регистрации пользователей, и я хочу добавить к числу моих buy_count, когда пользователи купить билет ...Последнее вставка ID и дилемма

так я получил 2 таблицы:

prize , users 

prize : users_id , buy_count 
users : fn , ln , pass...usual staff 

это sctipt для пользователей REG форма:

$sql = 'INSERT INTO users (id,fn,ls,psw) VALUES (:id,:fn,:ln,:psw); 
INSERT INTO prize (user_id, buy_count) VALUES (LAST_INSERT_ID(), 4)'; 

скрипт дает мне ошибку, Что сог с ним? Я хочу добавить к идентификатору пользователя в таблице при регистрации пользователя, в чем проблема с моим запросом? Каков правильный способ сделать это?


ОБНОВЛЕНО:

так что теперь это мой код:

<?php 



try { 
    require_once 'inc/connect.php'; 

    $sql =(" 
INSERT INTO users (fn,ls,psw) VALUES (:fn,:ln,:psw); 
INSERT INTO prize (user_id) VALUES (LAST_INSERT_ID()); 
    "); 



$form = $_POST; 
$fn = $form['fn']; 
$ln = $form['ln']; 
$psw = $form['psw']; 

    $values = array(
':fn' => $fn , 
':ln' => $ln , 
':psw' => $psw 

    ); 

    $stmt = $db->prepare($sql); 
    $stmt->execute($values); 



    if ($stmt){ 
     echo "<p>Thank you. You have been registered</p>"; 
    } else { 
     echo "<p>Sorry, there has been a problem inserting your details. Please contact admin.</p>"; 
    } 

    $errorInfo = $db->errorInfo(); 
    if (isset($errorInfo[2])){ 
     $error = $errorInfo[2]; 
    } 



} catch (Exception $e) { 
    $error = $e->getMessage(); 
} 
?> 




<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Database Connection with PDO</title> 
    <link href="../../styles/styles.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 
<h1>Connecting with PDO</h1> 
<?php if(isset($error)) { 
    echo "<p>$error</p>"; 
}else { 

    ?> 
<?php 
if (empty($_POST)) { 
    ?> 



    <h1>Registration</h1> 
    <form name="" action="" method="POST"> 
     <label for 'username'>Username: </label> 
     <input type="text" name="fn"/> 
     <label for 'password'>Password: </label> 
     <input type="password" name="psw"/> 
     <label for 'first_name'>First name: </label> 
     <input type="text" name="fn"/> 

     <br/> 
     <button type="submit">Submit</button> 
    </form> 


<?php 
} else { 
    print_r($_POST); 
} 
    ?> 



<?php } //error ?> 

</body> 
</html> 

еще не делает то, что я хочу ... оленья кожа добавить любые данные в таблицах и AI users_id с последним II любой может помочь с этим?

+0

Это два отдельных заявления. Возможно, вы должны выполнить их отдельно. – GolezTrol

+0

пытался запустить оба запроса, но с разными переменными? поэтому разделите запрос :) с двух в одном var на один для каждого vars и выполните их по одному за раз –

+0

Просьба сообщить об ошибке. – idstam

ответ

0

Короткий ответ: RTM

Длинный ответ (из документации MySQL) Когда новое значение AUTO_INCREMENT сгенерировано, вы также можете получить его путем выполнения ВЫБРАТЬ LAST_INSERT_ID() заявления

Вы не генерирующие новый идентификатор автоматически, вы указываете значение напрямую. Таким образом, вы можете сделать одну из двух вещей: удалите столбец id и значение: id placeholder из вашего первого запроса ИЛИ используйте то же самое: id placeholder во втором запросе.

+0

, поэтому я сделал это: $ sql = 'INSERT INTO users (fn, ls, psw) VALUES (: fn,: ln,: psw)'; $ sqlp = 'INSERT INTO приз (user_id) VALUES (LAST_INSERT_ID())'; , я до сих пор не знаю, как ободрить оба запроса с помощью одного представления – Greatone

+0

oh я получил его mysqli multi_query ($ query) ll сделать это – Greatone

+0

Вы используете mysqli или pdo? Если вы используете mysqli, вы можете использовать метод $ mysqli-> multi_query. – Jameel

Смежные вопросы