无法将字符串转换为int(php)

时间:2014-07-31 04:10:21

标签: php casting

我正在尝试完成我的日期脚本问题。我有一个随机数生成器(外部),每天插入一个表。我拿这个号码从另一张表中提取相应的问题。

// Query 1
$query1 = "SELECT $field1 FROM $table1 WHERE id=1";
$result1 = mysqli_query($con1, $query1);

// Query 2
$query2 = "SELECT $field2 FROM $table2 WHERE QNum = $result1";
$result2 = mysqli_query($con2, $query2);

// Display question
while($row = mysqli_fetch_array($result2)) {
    echo $row['question'];
}

$result1正在提取一个随机数,让我们说它是9.当使用$result1来提问时,它不起作用,但当我用数字9替换$result1时,有用。我试验了语法并最终认为它可能是一个字符串副整数的问题。

我尝试将其转换为整数,但它会将$result1的值分配为1.我不知所措。我不明白字符串是否为9,如何将其转换为整数将改变其值。

我觉得在经过几天的实验后我已经尝试了所有的东西,但我确信它非常简单。请帮忙。

2 个答案:

答案 0 :(得分:2)

你是对的,它非常简单。您需要获取行以获取值:

$row = mysqli_fetch_assoc($result1);
$qnum = $row[$field1];

$query2 = "SELECT $field2 FROM $table2 WHERE QNum = $qnum";

您似乎通常理解这一点,因为您调用mysql_fetch_array来获取第二个查询的结果。为什么第一个查询应该有所不同?

但是,您可以在一个查询中完成所有这些操作:

$query2 = "SELECT t2.$field2
           FROM $table1 t1
           JOIN $table2 t2 ON t1.$field1 = t2.QNum
           WHERE t1.id = 1";

答案 1 :(得分:0)

您是否检查了$ result1中返回的内容?

它应该是一个不能在第二个mysql查询中使用的对象。首先,您必须通过获取查询来获取该查询的值。

$result1 = mysqli_query($con1, $query1);
$row = mysqli_fetch_array($result1, MYSQLI_NUM);
$random_number = $row[0];

然后可以在第二个查询中使用此$ random_number。希望这能解决你的错误。