2016-03-06 52 views
0

我非常新的SQL交易并试图执行下面这并不幸的是没有工作的语句...

$stmt = $mysqli->prepare(" 

BEGIN; 

INSERT INTO groups (group_name, group_desc, user_id_fk) VALUES ("'.$groupName.'","'.$groupDesc.'","'.$user_id.'"); 

INSERT INTO group_users (group_id_fk, user_id_fk) VALUES (LAST_INSERT_ID(), "'.$username.'"); 

COMMIT; 

") or trigger_error($mysqli->error, E_USER_ERROR); 

$stmt->execute(); 

$stmt->close(); 

这甚至可能是什么我想在这里或者是它完全错误?

我很感谢每一个回应,谢谢!

+0

请介绍“没有工作”。 –

+0

好吧,提交表单后我得到一个空白屏幕...... 尽管如此,我最初的问题仍然存在,就好像这个声明甚至可以通过这个函数提交? – user3174027

+0

你在哪里绑定你的参数? – Lori

回答

0

您正在使用prepare()错误的方式。如果直接在查询中添加变量,使用prepare()是绝对没有意义的。

这是你如何查询必须执行:

$mysqli->query("BEGIN"); 

$sql = "INSERT INTO groups (group_name, group_desc, user_id_fk) VALUES (?,?,?)"; 
$stmt = $mysqli->prepare($sql); 
$stmt->bind_param("ssi",$groupName,$groupDesc,$user_id); 
$stmt->execute(); 

$sql = "INSERT INTO group_users (group_id_fk, user_id_fk) VALUES (LAST_INSERT_ID(), ?)"; 
$stmt = $mysqli->prepare($sql); 
$stmt->bind_param("s",$username); 
$stmt->execute(); 

$mysqli->query("COMMIT");