您好,我有一个网站可以接收汽车品牌并生成与数据库相对应的汽车 ID 结果。虽然有许多解决方案可用于将 sql 查询结果存储到变量,但在这种情况下它似乎不起作用。
我已经在数据库中尝试了 sql 语句,它使用 1 个结果输出,这是正确的。
<?php
session_start();
include "dbconn.php";
$carcat = $_SESSION['selectedcarcat'];
$carbrand = $_POST['carbrand'];
$userid = $_SESSION['loginid'];
$username = $_SESSION['loginname'];
$startdate = $_POST['date1'];
$enddate = $_POST['date2'];
$pick = $_POST['pickuploc'];
$return = $_POST['returnloc'];
$calqty = 0;
$selcaridsql = "SELECT carid FROM cars WHERE brand='$carbrand' ";
$caridresult = $dbcnx->query($selcaridsql);
$caridrow = mysql_fetch_object($caridresult);
$carid = $caridrow['carid'];
if (!$caridresult)
{
$errmessage = "Your carid select query failed.";
echo "<script type='text/javascript'>alert('$errmessage');</script>";
}
echo '<br>Debug 1 ';
echo '<br>The selected qty is '
.$qtyresult1.'<br />';
echo '<br>The calculated qty is '
.$calqty.'<br />';
echo '<br>The content carid is '
.$carid.'<br />';
echo '<br>The content userid is '
.$userid.'<br />';
echo '<br>The content start is '
.$startdate.'<br />';
echo '<br>The content end is '
.$enddate.'<br />';
echo '<br>The content pick is '
.$pick.'<br />';
echo '<br>The content return is '
.$return.'<br />';
echo '<br>The content carbrand is '
.$carbrand.'<br />';
?>
出现错误时,“Content carid is”处显示空白结果。浏览论坛后,变量 $carid
似乎没有任何值,我可能推断错误了。
回显结果:
Debug 1
The selected qty is
The calculated qty is 0
The content carid is
The content userid is
The content start is 2016-10-28
The content end is 2016-10-29
The content pick is jurong
The content return is bishan
The content carbrand is Honda
最佳答案
显然,在使用 var_dump 调试 Chris 所述的问题后,问题缩小到由 mysql_fetch_object($caridresult);
收集的 NULL 值。由于数据库连接使用 @$dbcnx = new mysqli('localhost','values','values','values');
数据库类检索数组值是错误的。因此,解决方案是 mysqli_fetch_array
。
这些代码可能对尝试调试的人有帮助:
<?php // register.php
session_start();
include "dbconn.php";
$carcat = $_SESSION['selectedcarcat'];
$carbrand = $_POST['carbrand'];
$userid = $_SESSION['loginid'];
$username = $_SESSION['loginname'];
$startdate = $_POST['date1'];
$enddate = $_POST['date2'];
$pick = $_POST['pickuploc'];
$return = $_POST['returnloc'];
$calqty = 0;
$selcaridsql = "SELECT carid FROM cars WHERE brand='$carbrand' ";
echo $selcaridsql."<br>";
$caridresult = $dbcnx->query($selcaridsql);
echo "<br>".var_dump($caridresult);
if ($caridresult->num_rows >0 )
{
// if they are in the database register the user id
echo '<br>Hello more than 1 <br>';
}
else
{
echo '<br>Hello less than 1 <br>';
}
$caridrow = mysqli_fetch_array($caridresult);
echo var_dump($caridrow)."<br>";
$carid = $caridrow['carid'];
echo var_dump($carid)."<br>";
if (!$caridresult)
{
$errmessage = "Your carid select query failed.";
echo "<script type='text/javascript'>alert('$errmessage');</script>";
}
echo '<br>Debug 1 ';
echo '<br>The selected qty is '
.$qtyresult1.'<br />';
echo '<br>The calculated qty is '
.$calqty.'<br />';
echo '<br>The content carid is '
.$carid.'<br />';
echo '<br>The content userid is '
.$userid.'<br />';
echo '<br>The content start is '
.$startdate.'<br />';
echo '<br>The content end is '
.$enddate.'<br />';
echo '<br>The content pick is '
.$pick.'<br />';
echo '<br>The content return is '
.$return.'<br />';
echo '<br>The content carbrand is '
.$carbrand.'<br />';
?>
特别感谢 Chris 帮助查找错误!
关于php - 将单个 SQL SELECT 语句查询结果分配给 PHP 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270468/