嗨,我有一个网站,在一个汽车品牌,并产生一个汽车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 card 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值。由于DB连接利用@$dbcnx = new mysqli('localhost','values','values','values');
, DB类对于检索数组值是错误的。因此,解为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帮忙找到错误!
我现在没有能力测试这个。
但是,您已经确认$carid
没有值(为null)。
并且您已经确认SQL语句在对数据库运行时返回正确的值。因此,一个可能的问题是您用代码发送给数据库的查询。
查询:
$selcaridsql = "SELECT carid FROM cars WHERE brand='$carbrand' ";
我的建议修复你的查询:
$selcaridsql = "SELECT carid FROM cars WHERE brand='" + $carbrand + "'";
你可以发送字符串字面量" $carbrand
",而不知道它,除非你打印出SQL语句来检查。
你试过吗?
另外,请检查所有$_POST
的值,以确保它们是您认为的。这对安全也是非常重要的。
找到那些println语句并告诉我你找到了什么:-)。
打印出来,确保你的值是你所期望的。
我99%肯定这就是问题所在。