【发布时间】:2018-04-21 14:53:18
【问题描述】:
我正在用 HTML/PHP 编写一个页面,该页面连接到一个码头数据库(船、船主等),该数据库从下拉列表中选择一个船名,然后显示该船在其上完成的所有服务.
这是我的相关代码...
if(isset($_POST['form1'])){//if there was input data submitted
$form1 = $_POST['form1'];
$sql1 = 'select Status from ServiceRequest,MarinaSlip where MarinaSlip.SlipID = ServiceRequest.SlipID and BoatName = "'.$form1.'"';
$form1 = null;
$result1 = $conn->query($sql1);
$test = 0;
while ($row = mysqli_fetch_array($result1, MYSQLI_ASSOC)) {
$values1[] = array(
'Status' => $row['Status']
);
$test = 1;
}
echo '<p>Service Done:</p><ol>';
if($test = 1){
foreach($values1 as $v1){
echo '<li>'.$v1['Status'].'</li>';
}
echo '</ol>';
}else{
echo 'No service Done';
}
我遇到的问题是一些服务描述只是Open,我不想显示为服务完成,或者根本没有服务完成,这会抛出undefined variable: values1
如果values1 为空,我将如何阻止我的脚本将Open 添加到values1 数组并显示未完成任何工作的消息?
【问题讨论】:
-
if($test = 1)assigns1到$test,条件将始终评估为true。==比较,===额外比较类型。请参阅this link 了解更多信息。 -
您对SQL injection 敞开心扉。您需要使用准备好的语句,而不是将变量连接到查询中。见How can I prevent SQL injection in PHP?。另外,请开始使用更具描述性/意义的变量和字段名称。在 6 个月内,当您需要更新此内容时,您将不知道
$values1、form1等中的内容。