在select查询中使用整数变量

时间:2011-05-30 18:35:22

标签: php mysql

  

可能重复:
  How to fix this error “mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in”?
  Warning: mysql_fetch_* expects parameter 1 to be resource, boolean given error

我搜索并浏览了我能找到的每个网站,包括这个网站,以获得答案。我见过许多情况类似的人,但是我无法让这一点在我的生活中发挥作用。我现在已经试了好几个小时了。

我有一个使用POST的简单表单,它从表中抓取所有主键自动递增int,在下拉选择器中显示它们,然后将用户发送到下一页,以便他们可以修改他们选择了正确的条目什么不起作用是当我尝试重用传递给下一页的相同值时,我可以抓取他们选择的'id'的字段并将它们显示给它们进行编辑。有问题的'int'是主键,由auto_increment创建。它被命名为'tickid'

的这个页面
$tickettoedit = intval($_POST['tickid']);
$tick = floor($tickettoedit);
$ticketinfo = mysql_query("select * from call_log where id = $tick");
$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

这总是返回SQL错误:

Warning: mysql_query() expects parameter 1 to be string, resource given in C:\wamp\www\doeditcalllog.php on line 18

如何使这个int在查询中可用?我以为我只需要通过intval传递它,但它似乎根本没有帮助。

7 个答案:

答案 0 :(得分:2)

该行:

$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

应该读一下:

$result = mysql_fetch_array($ticketinfo) or die('<br>Could not connect: ' . mysql_error()); // or mysql_fetch_assoc()

错误是您再次调用mysql_query(),结果是从上一个查询返回的,而不是使用mysql_fetch_array()或mysql_fetch_assoc()提取结果。

答案 1 :(得分:1)

首先,您使用mysql查询两次,首先发送查询

$ticketinfo = mysql_query("select * from call_log where id = $tick");

然后您尝试发送查询,但结果集资源作为参数

$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

你必须使用PHP的一个函数来实际获得结果,例如

mysql_fetch_assoc($ticketinfo);

例如,假设您的call_log表包含以下列: *添加日期 * TXT

比你能做的事情

while($row = mysql_fetch_assoc($ticketinfo)){
echo $row['date_added']." - ".$row['txt']."<br>";
}

mysql_fetch_assoc将为您对其进行的每次调用返回结果集中的下一行。如果它返回了所有行,则返回false,因此循环将停止。

答案 2 :(得分:1)

您正在调用mysql_query()功能两次。您在$ticketinfo中存储了查询结果,因此$ticketinfo现在是一个资源。但是,您尝试再次在其上调用mysql_query的下一行。

固定代码:

$tickettoedit = intval($_POST['tickid']);
$tick = floor($tickettoedit);
$ticketinfo = "select * from call_log where id = $tick";
$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

答案 3 :(得分:1)

您正在使用mysql_query的结果并将其传递给mysql_query,正如错误提到的那样:

$ticketinfo = mysql_query("select * from call_log where id = $tick");
$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

我想你想要这个:

$ticketinfo = "select * from call_log where id = $tick";
$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

答案 4 :(得分:1)

您拨打mysql_query两次。这是更正:

$tickettoedit = intval($_POST['tickid']);
$tick = floor($tickettoedit);
$ticketinfo = "select * from call_log where id = $tick";
$result = mysql_query($ticketinfo) or die('<br>Could not connect: ' . mysql_error());

答案 5 :(得分:1)

要注意的一些事情,在最后一行,如果你想要oop格式的结果集,你需要mysql_fetch_array()或mysql_fetch_object()。

$result = mysql_fetch_array($ticketinfo) 
    or die('<br>Could not connect: ' .  mysql_error());

此外,我认为您的第一行应更改为我在下面发布的内容,但您应该使用filter function或is_numeric()条件改进检查。

 $tickettoedit = (int) $_POST['tickid']

答案 6 :(得分:0)

你不应该在mysql_query中使用#mysql_result