使用mysql_query

时间:2011-07-12 21:19:37

标签: php mysql

我在php中有2个查询,我想在query2之前放置并执行query1,query1是一个select查询,query2是一个删除查询。当我在query1中将query2放入php代码时,两个查询都正常工作但是当我把query1在query2之前,只有query1工作,而query2不起作用。

query1:

$result = mysql_query( 'CALL view_polls('.$blogId.');' );

QUERY2:

 $rlt=mysql_query('CALL delete_poll('.$I.');');

所有代码:

$blogId=1;  
    $r=$_GET['rowNumber'];

$result = mysql_query( 'CALL view_polls('.$blogId.');' );

$row=mysql_fetch_array($result);
for($i=0;$i<$r;$i++)
    $row=mysql_fetch_array($result);
//echo $row['id'];
$I=$row['id'];
$rlt=mysql_query('CALL delete_poll(.'$I.');');  `

我的程序是简单的选择和删除程序。

view_poll proc:

DELIMITER $$

DROP PROCEDURE IF EXISTS `prj`.`view_polls` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `view_polls`(IN b_id INT)
BEGIN
select id,title,showPoll,ans1,ans2,ans3,ans4,ans5,ans6 from poll
where blog_id=b_id;
END $$

DELIMITER ;

delete_poll proc:

DELIMITER $$

DROP PROCEDURE IF EXISTS `prj`.`delete_poll` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_poll`(IN I int)
BEGIN
   delete from poll
   where id=I;
END $$

DELIMITER ;

2 个答案:

答案 0 :(得分:0)

我不知道$r来自哪里,但最可能的问题是您已达到第一个结果集的末尾,因此$row为false且$I不是一个ID。

答案 1 :(得分:0)

我没有足够的信息来解决您的问题。你可以发布SQL view_polls和delete_poll的代码吗?还有两件事我想指出:

1)确保在$ blogId上使用mysql_real_escape_string来防止SQL注入攻击。 2)看起来你将$ row视为一个关联数组。您不需要使用mysql_fetch_array,而是可以使用mysql_fetch_assoc,它不会返回第一个数字索引。

也许有可能在view_poll()中出现问题,并且只有在没有要查看的民意调查时才能正常工作(当你调用delete_poll()时会发生这种情况)