基于MySQL的变量在PHP中变为NULL

时间:2013-08-09 19:35:37

标签: php mysql

以下代码位于我正在构建的php文件中。我正在构建一个动态表单,它将在HTML div中显示产品名称和其他信息。现在,我遇到了一个问题,我认为这可能是相对简单的问题。我原本试图echo $name;,但它是空的,所以我放了一个测试回声,看看它是否回应到了一个不同于我预期的地方,但是没有,测试结果正确。所以,我做了一个var_dump($name);,它变成了NULL。在我回显之前我在行中定义它,为什么它会变为NULL?

<?php
$productquery = mysqli_query($connection, 'SELECT * FROM products WHERE PID="$productID"');
$productrow = mysqli_fetch_assoc($productquery);
//$dbIDlogin = $row5['ID'];         
?>

<?php 
$name = $productrow['Productname'];
echo var_dump($name);
echo "<br>Why?";
?>

更新

vardump($ productrow ['Productname'])为空。

vardump ing $productquery给出了这个:

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(18) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }

第二次更新:

显然$ productID为NULL。所以我试着把它设置为4.我现在有了这个,它仍然不起作用。我试过围绕4引号,单引号和双引号,所以这不是问题所在。但在我定义之后,它仍然表示它是空行。

$productID=4;
$productquery = mysqli_query($connection, 'SELECT * FROM products WHERE PID="$productID"');
$productrow = mysqli_fetch_assoc($productquery);

3 个答案:

答案 0 :(得分:1)

$ productrow ['Productname']为空。

使用$ productrow的vardump / print_r语句找出您的查询实际返回的内容

答案 1 :(得分:1)

$ productID是否包含有效数字?

你想要遍历结果!您假设只有1个结果,并且不需要迭代。

另外,尝试显示查询找到的行数:

$num_rows = mysql_num_rows($productquery);

答案 2 :(得分:0)

主要问题似乎是我使用单引号:

'SELECT * FROM products WHERE PID="$productID"'

而不是双引号:

"SELECT * FROM products WHERE PID=$productID"