Php 在MySQL中使用LIKE和变量
好的,我想在我的SQL语句中使用like操作符获得数据库查询的匹配项 我在看一个有日期和时间的字段,就像这样Php 在MySQL中使用LIKE和变量,php,mysql,Php,Mysql,好的,我想在我的SQL语句中使用like操作符获得数据库查询的匹配项 我在看一个有日期和时间的字段,就像这样 2012-04-27 12:00:00 我只想比较字符串的第一部分,只是日期位,所以我使用了LIKE,但没有得到任何匹配 这是密码 $colname_cruises = "-1"; if (isset($_GET['id'])) { $colname_cruises = str_replace('-', ' ', $_GET['id']); } $colname_date = "-1
2012-04-27 12:00:00
我只想比较字符串的第一部分,只是日期位,所以我使用了LIKE,但没有得到任何匹配
这是密码
$colname_cruises = "-1";
if (isset($_GET['id'])) {
$colname_cruises = str_replace('-', ' ', $_GET['id']);
}
$colname_date = "-1";
if (isset($_GET['date'])) {
$colname_date = $_GET['date'];
}
$query_cruises = sprintf("SELECT * FROM cruises WHERE title = %s AND departs LIKE %s", GetSQLValueString($colname_cruises, "text"), GetSQLValueString($colname_date, "text"));
$cruises = mysql_query($query_cruises, $connection) or die(mysql_error());
$row_cruises = mysql_fetch_assoc($cruises);
$totalRows_cruises = mysql_num_rows($cruises);
我很确定仅仅做一个像%s这样的动作是不够的。。。我还可以在这里添加什么?如果您只想比较字符串的第一部分,只想比较日期,那么为什么不使用哪个呢 提取日期或日期时间表达式表达式的日期部分
对于日期比较,您可以在之间使用。 尝试使用类似的方法:
departs between <date> and DATE_ADD(<date>,INTERVAL 1 DAY)
介于和日期之间添加(,间隔1天)
请再试一次
"SELECT * FROM cruises WHERE title = '".$colname_cruises."' AND departs LIKE '".$colname_date."%'";
如果要获取包含此日期的偏离值起始字符串的记录,则必须使用如$str%
感谢sprintf函数参数正在替换%(您也需要这样做),对吗?保存日期和时间的列的数据类型是什么?数据类型是datetime,我刚刚将GetSQLValueString修改为date。。。仍然是一个空查询返回请尝试
像%%%s%%
,它将被sprintf翻译成%your\u date%
,意思是“your\u date可能前面加了某物,后面加了某物”。根据GetSQLValueString函数是否添加引号,您可能需要稍微调整一下……好的,如果返回该值,您的SQL语法中就会出现错误;查看与您的MySQL服务器版本对应的手册,了解“%”2012-04-27“%”附近使用的正确语法。在第1行,我使用了“从标题=%s和日期(离开)如%s的巡游中选择*”,非常感谢大家/#diEcho
"SELECT * FROM cruises WHERE title = '".$colname_cruises."' AND departs LIKE '".$colname_date."%'";