在同一列中选择多个WHERE
问题描述:
我想从同一列中选择月份和年份。我如何从列中分离月份和年份?在同一列中选择多个WHERE
<label>Bulan :</label>
<select name="month">
<option value=""></option>
<option value="1">Januari</option>
<option value="2">Februari</option>
<option value="3">Mac</option>
<!-- ... -->
</select>
<label>Tahun :</label>
<select name="year">
<option value=""></option>
<option value="2017">2017</option>
<option value="2016">2016</option>
</select>
<input type="submit" value="Hantar" >
<?php
if(isset($_POST['year']) && ($_POST['month']))
{
$tarikh = mysql_real_escape_string($_POST['month']);
$tarikh = mysql_real_escape_string($_POST['year']);
我运行此查询
$query ="SELECT * FROM pelanggan
WHERE (MONTH(tarikh) = '$tarikh')
and (YEAR(tarikh) = '$tarikh')";
为什么不输出显示?上述查询有什么问题?
答
查询字符串中使用相同的变量月份和年份
在
$tarikhMonth = mysql_real_escape_string($_POST['month']);
$tarikhYear = mysql_real_escape_string($_POST['year']);
和
$query ="SELECT * FROM pelanggan
WHERE (MONTH(tarikh) = '$tarikhMonth')
and (YEAR(tarikh) = '$tarikhYear')";
答
您将要覆盖$ tarikh变量添加不同的变量名。命名他们$月和$年应该工作。
我会使用PDO,而不是尝试手动转义字符串。
答
您需要为月份和年份设置不同的变量名称。试试这个
<label>Bulan :</label> <select name="month">
<option value=""></option>
<option value="1">Januari</option>
<option value="2">Februari</option>
<option value="3">Mac</option>...
</select><label>Tahun :</label> <select name="year">
<option value=""></option>
<option value="2017">2017</option>
<option value="2016">2016</option>
</select><input type="submit" value="Hantar" ></td>
<?php
if(isset($_POST['year']) && ($_POST['month']))
{
$tarikh_month = mysql_real_escape_string($_POST['month']);
$tarikh_year = mysql_real_escape_string($_POST['year']);
$query ="SELECT * FROM pelanggan
WHERE (MONTH(tarikh) = '$tarikh_month')
and (YEAR(tarikh) = '$tarikh_year')";
因为你覆盖了变量值,我相信你的数据库中没有2017年的日期。还要学会立即使用参数,而不是自己逃脱字符串。 –