Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MySQL中使用LIKE和变量_Php_Mysql - Fatal编程技术网

Php 在MySQL中使用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

好的,我想在我的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";
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."%'";