我有2个查询,我想在第二个查询中使用第一个查询的结果 以下对我不起作用:
$id = $_GET['uid'];
$app_id = $_GET['apid'];
$sql = "insert into tbl_sc (client_id,status) values ($id,1)";
mysql_query($sql) or die ($sql);
$result = mysql_insert_id();
echo $result;
$sql = "insert into tbl_ms(m_name, ng_ID, status)
values ($app_id,$result ,1)";
$result = mysql_query($sql) or die ($sql);
有没有其他方法可以获得相同的结果?
答案 0 :(得分:2)
您可以使用MySQL LAST_INSERT_ID()功能。这样所有插入id的混乱都将消失。
$sql = "insert into tbl_sc (client_id,status) values ($id,1)";
if(mysql_query($sql)){
$sql = "insert into tbl_ms(m_name, ng_ID, status)
values ($app_id, LAST_INSERT_ID() ,1)";
$result = mysql_query($sql);
if($result){
// Process your result
}else{
// second query failed!
die (mysql_error());
}
}else{
// first query failed!
die (mysql_error());
}
答案 1 :(得分:1)
$result
包含SQL资源,而不是id。
$insert_id = mysql_insert_id();
$sql = "INSERT INTO tbl_ms(m_name, ng_ID, status)
VALUES ($app_id, $insert_id, 1)";
不要忘记清理用户输入以避免注入攻击。
答案 2 :(得分:1)
$result
将始终包含布尔值,如果成功,则在下一个查询中使用时,它将始终为1
。您echo
d您需要的值,但您没有在变量中捕获它,因此可以在下一个查询中使用它。
试试这个:
$id = mysql_real_escape_string($_GET['uid']);
$sql = "INSERT INTO tbl_sc
(client_id, status)
VALUES
($id, 1)";
mysql_query($sql) or die ("MySQL error with query ( $sql ): ".mysql_error());
$app_id = mysql_real_escape_string($_GET['apid']);
$insertId = mysql_insert_id();
$sql = "INSERT INTO tbl_ms
(m_name, ng_ID, status)
VALUES
($app_id, $insertId ,1)";
mysql_query($sql) or die ("MySQL error with query ( $sql ): ".mysql_error());
您必须在查询中使用之前必须转义用户输入 - 您不希望从Bobby Tables访问...
答案 3 :(得分:1)
在第二个$insertedID = mysql_insert_id();
变量之前创建一个变量$sql
!
在第二个$sql
查询中,将$result
替换为$insertedID
它应该可以解决你的问题!
答案 4 :(得分:1)
在第二个查询中,只需使用
insert into tbl_ms(m_name, ng_ID, status)
values ($app_id,last_insert_id() ,1)
无需通过PHP播放此内容!