我开发一个数据库驱动的网站。我知道有关php和mysql的基础知识。现在有几件事情,我想问一下。喜欢,
我在sql中创建了一个名为“ news”的表,其中包含以下字段:
id (int)
newstitle (varchar)
newscontent (varchar)
dateadded (date)
注日期加入仅包含日期。
我已经用php pdo创建了一个查询,看起来像这样
$query = $pdo->prepare("SELECT * FROM news ORDER BY dateadded DESC LIMIT 5");
上面的查询给了我错误,这与错误的MySql语法有关。什么是正确的查询格式?我想做的是从``新闻''表中按日期和时间的降序仅获取5条记录,并且由于日期已经存储在``日期添加''字段中,例如我还想将“ 2019-01-03”与时间一起存储,并按照日期和时间降序查询结果吗?最后,我想在循环时使用PHP PDO显示记录。
我们将不胜感激。
P.S.(抱歉英语不好,如果您看到任何错误或格式错误,请随时进行编辑)
答案 0 :(得分:2)
已更新
您应该选择要查询的数据库
有三种方法
1-创建PDO
对象时
`$ pdo =新的PDO(“ mysql:server =服务器名称; dbname =您的数据库名称”,“用户名”,“密码”);
2次查询use database
查询运行之前$pdo->query('use databasename
);
3-为查询添加数据库名称
$query = $pdo->query("SELECT * FROM databasename.news ORDER BY dateadded DESC LIMIT 5");
也请注意
您应使用query
而不是prepare
方法,并调用fetchAll
或fetch
来获取记录
$query = $pdo->query("SELECT * FROM news ORDER BY dateadded DESC LIMIT 5");
$rows = $query->fetchAll(); // or you can use `fetch` and get records one by one
prepare
用于参数绑定,您可以使用它来避免sql injection
并添加用户输入数据进行查询
例如
$query = $pdo->prepare("SELECT * FROM news WHERE id = ? ORDER BY dateadded DESC LIMIT 5");
$query->execute([$_GET['id']]);
$rows = $query->fetchAll(); // or you can use `fetch` and get records one by one
有两种方法来设置绑定,首先使用?
作为参数,然后使用名称绑定并将assoc数组传递给execute
您也可以将其用于query
,但这会将代码增加了一行
$query = $pdo->prepare("SELECT * FROM news ORDER BY dateadded DESC LIMIT 5");
$query->execute(); //note: there is not any parameter binding, nothing passed
$rows = $query->fetchAll(); // or you can use `fetch` and get records one by one
答案 1 :(得分:0)
我从过程PHP开始使用PHP,现在我正在使用面向对象的PHP。如果可以,请回答我吧
您可以逐步查看我的代码,一切都很清楚:-
1。创建连接。
2。写查询。
3。为查询准备语句。
4。清理并绑定查询的参数(在数据库中插入的情况下) 在查询中不使用任何变量时,无需进行选择。
5。执行查询。
6。根据需要获取数据。
// select all query
$query = "SELECT * FROM news ORDER BY dateadded DESC LIMIT 5"";
// prepare query statement
$stmt = $pdo->prepare($query);
// execute query
$stmt->execute();
// Fetch data according to your need
$num = $stmt->rowCount();
if($num>0){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// extract row this will make $row['newstitle'] to just $newstitle only
extract($row);
$data = array(
"newstitle" => $newstitle,
"newscontent " => $newscontent ,
"dateadded" => $dateadded,
);
array_push($data_arr, $);
} //while loop closed
} //if statement closed