【发布时间】:2015-04-03 10:24:22
【问题描述】:
当我在 MySQL 中尝试以下查询时,我得到了完美的结果:
SELECT DATE_FORMAT(p.date_arrivee, '%d/%m/%Y'),
DATE_FORMAT(p.date_depart, '%d/%m/%Y'), p.prix, s.photo,
s.ville, s.capacite FROM produit p, salle s
WHERE p.id_salle = s.id_salle AND etat=0 ORDER BY id_produit DESC
LIMIT 0,3
在 PHP 中插入时:
$query = "SELECT DATE_FORMAT(p.date_arrivee, \'%d/%m/%Y\'), DATE_FORMAT(p.date_depart, \'%d/%m/%Y\'), p.prix, s.photo, s.ville, s.capacite FROM produit p, salle s WHERE p.id_salle = s.id_salle AND etat=0 ORDER BY id_produit DESC LIMIT 0,3 ";
我得到一个空格,如果我从引号中删除反斜杠,我会得到一个未定义的索引错误。
有人可以解释我做错了什么,以便尝试从DATETIME 中删除时间。
这是用于创建我的表格的完整 PHP 代码:
$query = "SELECT DATE_FORMAT(p.date_arrivee, '%d/%m/%Y'), DATE_FORMAT(p.date_depart, '%d/%m/%Y'), p.prix, s.photo, s.ville, s.capacite
FROM produit p, salle s
WHERE p.id_salle = s.id_salle AND etat=0
ORDER BY id_produit";
if ($result = $mysqli->query($query))
{
while ($row = $result->fetch_assoc()) {
echo '<img src="'.RACINE_SITE. '/img/thumbnail/' . $row['photo'] . '"/>';
echo '<p> Du ' . $row['date_arrivee'] . ' au ' . $row['date_depart'] . ' - ' . $row['ville'] . '<br/>'
. $row['prix'] . '€ pour ' . $row['capacite'] . ' personnes.</p>';
if(!isset($_SESSION['utilisateur'])) {
echo '<a href="connexion.php"><p>Connectez-vous pour ajouter l\'article à votre panier</p></a>';
}
else
{
echo '<button type="button">Ajouter au panier</button>';
}
}
};
下面是 CREATE TABLE 语句(连同数据等...)
CREATE TABLE IF NOT EXISTS `produit` (
`id_produit` int(5) NOT NULL AUTO_INCREMENT,
`date_arrivee` datetime NOT NULL,
`date_depart` datetime NOT NULL,
`id_salle` int(5) NOT NULL,
`id_promo` int(2) DEFAULT NULL,
`prix` int(5) NOT NULL,
`etat` int(1) NOT NULL,
PRIMARY KEY (`id_produit`),
KEY `id_promo` (`id_promo`),
KEY `id_salle` (`id_salle`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=25 ;
--
-- Contenu de la table `produit`
--
INSERT INTO `produit` (`id_produit`, `date_arrivee`, `date_depart`, `id_salle`, `id_promo`, `prix`, `etat`) VALUES
(14, '2015-06-08 09:00:00', '2015-06-10 18:00:00', 1, NULL, 900, 1),
(16, '2015-06-11 09:00:00', '2015-06-12 18:00:00', 2, NULL, 750, 0),
(17, '2015-06-08 09:00:00', '2015-06-10 18:00:00', 2, NULL, 900, 0),
(18, '2015-06-11 09:00:00', '2015-06-13 19:00:00', 1, NULL, 800, 0),
(19, '2015-06-08 09:00:00', '2015-06-10 22:00:00', 3, NULL, 1100, 0),
(20, '2015-06-08 07:45:00', '2015-06-10 22:00:00', 4, NULL, 1300, 0),
(21, '2015-06-11 09:00:00', '2015-06-13 21:00:00', 4, NULL, 2300, 0),
(22, '2015-06-08 06:00:00', '2015-06-13 19:00:00', 5, NULL, 2500, 0),
(23, '2015-06-11 09:00:00', '2015-06-13 19:00:00', 2, NULL, 1400, 0),
(24, '2015-06-11 09:00:00', '2015-06-13 19:00:00', 3, NULL, 1800, 0);
--
-- Contraintes pour les tables exportées
--
--
-- Contraintes pour la table `produit`
--
ALTER TABLE `produit`
ADD CONSTRAINT `produit_ibfk_1` FOREIGN KEY (`id_salle`) REFERENCES `salle` (`id_salle`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `produit_ibfk_2` FOREIGN KEY (`id_promo`) REFERENCES `promotion` (`id_promo`) ON DELETE CASCADE ON UPDATE CASCADE;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
还有 'salle' 的 CREATE TABLE 语句
--------------------------------------------------------
--
-- Structure de la table `salle`
--
CREATE TABLE IF NOT EXISTS `salle` (
`id_salle` int(5) NOT NULL AUTO_INCREMENT,
`pays` varchar(20) NOT NULL,
`ville` varchar(20) NOT NULL,
`adresse` text NOT NULL,
`cp` varchar(5) NOT NULL,
`titre` varchar(200) NOT NULL,
`description` text NOT NULL,
`photo` varchar(200) NOT NULL,
`capacite` int(3) NOT NULL,
`categorie` enum('reunion') DEFAULT NULL,
PRIMARY KEY (`id_salle`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;
--
-- Contenu de la table `salle`
--
INSERT INTO `salle` (`id_salle`, `pays`, `ville`, `adresse`, `cp`, `titre`, `description`, `photo`, `capacite`, `categorie`) VALUES
(1, 'France', 'Paris', '55, rue Boussingault', '75013', 'Salle Boussingault', 'Lokisalle propose des salles de réunion modernes et spacieuses ajusté à vos besoins. \nNos salles de réunion sont adaptées pour vos conférences, des réunions du conseil,\ndes rencontres internationales ou des événements. \nLa salle de réunion peut accueillir jusqu''à 80 délégués.\nVous avez également la possibilité de diviser la salle de réunion en trois chambres \nséparées avec des cloisons insonorisées.\nLes espaces publics offrent une atmosphère chaleureuse qui est idéal pour servir \ndes rafraîchissements lors de votre conférence.', 'salle11.jpg', 80, 'reunion'),
(2, 'France', 'Paris', '46, Boulevard Garibaldi', '75015', 'Salle Garibaldi', 'La salle de conférence Garibaldi offre 26 places assises dans le style de salle de direction, avec de superbes vues sur le boulevard Garibaldi. Une grande table avec 7 m de longueur et 150 cm de largeur se dresse au milieu de la salle .\n\nLes salles privées peuvent être séparés ou reliés au besoin et maintenus ensemble comme une unité de la belle tapisserie de couleur pourpre spécialement produite pour Lokisall, d''un motif inspiré par Orsta galerie d''art à Kumla préalablement conçu par le studio.\n\nPour les réunions , vous avez dans toutes nos salles privées sans fil haut débit .', 'salle12.jpg', 26, 'reunion'),
(3, 'France', 'Paris', '231 Boulevard st Germain', '75005', 'Salle Saint Germain', 'La salle Saint Germain est le lieu de rencontre idéal pour l''inspiration et la pensée créatrice. \nLa salle de la conception , de l''espace et de la lumière vous donne l''énergie dont vous avez besoin pour créer de nouvelles idées.\nLes places à la table de conférence , se pencher en arrière sur les canapés ou à demi couché dans les confortables fauteuils en face des fenêtres panoramiques et laissez-vous fasciner\nLa salle peut accueillir 40 personnes et est équipée d''un projecteur , de rideaux occultant et tableau blanc.', 'salle13.jpg', 40, 'reunion'),
(4, 'France', 'Lyon', '3 Rue de l''Humilité', '69003', 'Salle Humilis', 'La salle Humilis est notre salle de conférence la plus populaire avec la possibilité d''un aménagement souple. La chambre est située à un demi cran au dessus de l''entrée de gamme et offre un cadre tranquille et isolé . Deux grandes fenêtres donnant sur notre belle cour intérieur.', 'salle9.jpg', 25, 'reunion'),
(5, 'France', 'Lyon', '240 Rue Vendôme', '69003', 'Salle Vendôme', 'Notre plus grande salle de réunion est disponible dans la cour intérieur . Une installation nouvellement construite , qui sert aussi de salle de dégustation pour les grandes dégustations. Les locaux, fraîches et lumineuses sont naturellement dotées d''un mobilier confortable et la dernière technologie : Wi- Fi , projecteur, grand écran , DVD, VHS , système de son avec microphone , ventilation, éclairage réglable et plus.', '', 120, 'reunion'),
(6, 'France', 'Marseille', '45 Quai des Belges', '13001', 'Salle Belge', '', '', 25, 'reunion'),
(7, 'France', 'Marseille', 'Escalier Gare Saint-Charles', '13001', 'Salle Saint Charles', '', '', 400, 'reunion'),
(9, 'France', 'Marseille', '416 Boulevard National', '13003', 'Salle Nationale', '', '', 80, 'reunion'),
(10, 'France', 'Lyon', '168 Rue Paul Bert', '69003', 'Salle Paul Bert', '', '', 30, 'reunion'),
(11, 'France', 'Lyon', '25 Place des Terreaux', '69001', 'Salle des Terreaux', '', '', 45, 'reunion'),
(12, 'France', 'Lyon', '11-13 Rue du Général Plessier', '69002', 'Salle Plessier', '', '', 60, 'reunion'),
(13, 'France', 'Lyon', '6 Rue de l''Université', '69007', 'Salle de l''Université', '', '', 400, 'reunion'),
(14, 'France', 'Lyon', '262 Rue de Crèqui', '69003', 'Salle Crèqui', '', '', 12, 'reunion'),
(15, 'France', 'Paris', '7 Place Denfert-Rochereau', '75014', 'Salle Denfert-Rochereau', '', '', 75, 'reunion'),
(16, 'France', 'Paris', '35 Quai André Citroën', '75015', 'Salle André Citroën', 'Test 3', 'salle15.jpg', 18, 'reunion'),
(17, 'France', 'Paris', '60 Rue de Passy', '75016', 'Salle Passy', 'Test 2', 'salle16.jpg', 24, 'reunion'),
(18, 'France', 'Paris', '154-156 Rue la Fayette', '75010', 'Salle de la Fayette', 'Test 1', 'salle17.jpg', 50, 'reunion');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
【问题讨论】:
-
代码中的空 div 在哪里?
-
在双引号字符串中,您不需要转义单引号。所以你要做的是有效地插入这些斜线。但有效的 SQL 查询没有这些斜杠。逐字回显变量 $query(纯文本),并在您的数据库服务器中尝试将确切的查询作为回显。还要缩小查询并逐步构建以找到导致问题的部分。
-
@satishrajak :我没有通过整个代码来保存讲座,但最终结果基本上让我留下空白,而不是列出我数据库中的最后 3 个条目。
-
@hakre : 尝试逐步构建查询,直接错误是使用 DATE_FORMAT 时,即使只是简单地编写 SELECT DATE_FORMAT(date_arrivee, '%d/%M/%Y');
标签: php mysql sql date date-formatting