PHP显示查询不同的sql执行
Posted
技术标签:
【中文标题】PHP显示查询不同的sql执行【英文标题】:PHP show query different of sql execute 【发布时间】:2015-10-22 12:50:48 【问题描述】:config.php
@$mysqli= mysqli_connect($servername, $username_bd, $password_bd, $dbname);
if($mysqli->connect_error)
return false;
插入.php
include 'config.php';
$DateDefault = '2015-07-30 00:00:00
2015-08-30 00:00:00';
$sql = "INSERT INTO users (date) VALUES ('$DateDefault')";
if($query = $mysqli->query($sql)===true)
echo "Date add successfully";
else
echo "Error into date";
显示.php
include 'config.php';
$sql = "SELECT date FROM users WHERE username='$username'";
$query = $mysqli->query($sql);
if (@$query->num_rows > 0)
while ($dados = $query->fetch_assoc())
echo substr($dados['date'], 21, 19);
结果: "2015-08-30 00:00:00"
现在,当我在 phpmyadmin 中更改日期时,
"2015-07-30 00:00:00
2015-09-30 00:00:00"
显示这个:
"015-09-30 00:00:00 "
在 localhost 中,使用 wampserver,不会发生此错误
【问题讨论】:
date
列是两个日期?
感谢您的回复,日期列是 'utf8_unicode_ci'
不是字符集。实际上列中的数据是两个日期?列不能是日期时间字段,可能是varchar
或text
?
【参考方案1】:
您的问题很可能与how different operating systems treat line endings 有关。简而言之,在 Windows 上,行尾占用两个字符(回车和换行,\r\n
),而在大多数其他操作系统上,它们只占用一个(换行,\n
)。通过使用特定的字符偏移量,您正在引入您所看到的非一错误的可能性。
一个简单的解决方法是使用单个空格(或另一个字符)而不是换行符来分隔日期。如果还想使用换行符,可以split the string by whitespace:
$dates = preg_split('/\s+/', $dados['date']); // Split dates by whitespace
echo $dates[1]; // Print the second date
【讨论】:
我的本地主机在 Windows 中运行,服务器在 Linux 中运行。每个操作系统都以不同的方式使用行尾。我选择您的第二个解决方案,因为当我需要手动更新时,更容易在 phpmyadmin 中看到带有行尾的日期。感谢您解决我的问题@Jacob budin以上是关于PHP显示查询不同的sql执行的主要内容,如果未能解决你的问题,请参考以下文章
PHP + Mysql:来自第一个查询的动态表名,用于执行第二个查询