我有一个名为 messages 的表,其中有4个字段,分别是id_message,title,date_message和fk_user。
然后我还有另一个名为 users 的表,其中包含2个字段:id_user,伪。
我的目标是在概述中以法语格式设置字段 date_message 的日期。
此步骤可以。 这是我的要求信息...
$requeteSQL = "SELECT messages.id_message, messages.title, DATE_FORMAT(messages.date_message,'%d/%m/%Y')
AS date_message,id_user AS fk_user, users.pseudo
FROM messages INNER JOIN users
ON messages.fk_user=users.id_user
ORDER BY id_user ASC";
现在我的问题是我有一个搜索栏,当我输入标题时,日期不正确...该日期为英语格式。
if(isset($_GET['q']) AND !empty($_GET['q'])){
$q = htmlspecialchars($_GET['q']);
$requeteSQL = 'SELECT messages.*, users.pseudo
FROM messages INNER JOIN users
ON messages.fk_user=users.id_user
WHERE title LIKE "%' .$q.'%" ORDER BY id_message ASC';
}
我已经尝试过
if(isset($_GET['q']) AND !empty($_GET['q'])){
$q = htmlspecialchars($_GET['q']);
$requeteSQL = "SELECT messages.id_message, messages.title, DATE_FORMAT(messages.date_message,'%d/%m/%Y')
AS date_message,id_user AS fk_user, users.pseudo
FROM messages INNER JOIN users
ON messages.fk_user=users.id_user
WHERE title LIKE "%' .$q.'%" ORDER BY id_message ASC";
}
我有几条错误消息
警告:第18行遇到的非数字值
致命错误:未捕获的DivisionByZeroError:在第1行上以零模数
DivisionByZeroError:第18行的零模数
第18行在这里
WHERE title LIKE "%' .$q.'%" ORDER BY id_message ASC";
我不知道这个问题吗?
感谢您的帮助。
答案 0 :(得分:1)
除了您确实需要修复的不正确的SQL转义(请参阅Magnus的注释)之外,由于以下代码,您还会收到警告:
// " String opens here
$requeteSQL = "SELECT messages.id_message, messages.title, DATE_FORMAT(messages.date_message,'%d/%m/%Y')
AS date_message,id_user AS fk_user, users.pseudo
FROM messages INNER JOIN users
ON messages.fk_user=users.id_user
WHERE title LIKE "%' .$q.'%" ORDER BY id_message ASC";
// ^ String closes here
所以您的PHP看起来像
"String" % '.$q.' % "String"
其中'.$q.'
只是另一个字符串,而%
是模运算符。
修复字符串,然后纠正警告:
$requeteSQL = 'SELECT ... WHERE title like "%' . $q . '%" ORDER BY ...'
// ^ String opens ^ String closes