
$sql = 'select count(*) as cnt from テーブル名';
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res);
echo $row['cnt'];
function table_col($str) {
$sql = 'select count(*) as cnt from '.$str;
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res);
return $row['cnt'];
}
こちらでテーブルに入っているデータの総数を調べることができるのですが、
下記のように書き換えるとエラーが出てきます。$dsnの部分が間違っているようですが、修正法が書いてあるサイトにはmysqli_query($con, $sql);
$con = mysqli_connect('ホスト名','ユーザー名','パスワード');のように修正されております。
自身のサイトでは$dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost';と記載しているのでそちらを使おうと思ったのですが、駄目なのでしょうか?
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /home/hlxclitx/public_html/wp-content/themes/sample_theme/index.php on line 366
Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in /home/hlxclitx/public_html/wp-content/themes/sample_theme/index.php on line 367
$sql = 'select count(*) as cnt from rss_feed';
$res = mysqli_query($dsn, $sql);
$row = mysqli_fetch_assoc($dsn,$res);
echo $row['cnt'];
※全文はこちらです。
<?php
try {
$dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost';
$user = 'hlxclitx_wp1';
$password = 'E.HrypHWxNmltXgC5eS26';
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //エラーが発生した時に、例外を投げる
echo 'データベースへの接続が出来ました';
//RSSをまとめる
$url1 = [
'http://blog.livedoor.jp/dqnplus/index.rdf',
'http://alfalfalfa.com/index.rdf',
'http://himasoku.com/index.rdf',
];
// insertの準備
$stmt = $dbh->prepare('insert into rss_feed (title, link, date) values (?, ?, ?) on duplicate key update title=?, link=?, date=?');
// URLのループ開始 テーブルに格納
foreach ($url1 as $url) {
if (($rss = @simplexml_load_file($url)) === false) {
continue;
}
foreach ($rss->item as $item) {
$title = $item->title;
$link = $item->link;
$dc = $item->children('http://purl.org/dc/elements/1.1/');
$date = date('Y-m-d H:i:s', strtotime($dc->date));
$stmt->execute([$title, $link, $date, $title, $link, $date]);
}
}
$sql = 'select count(*) as cnt from rss_feed';
$res = mysqli_query($dsn, $sql);
$row = mysqli_fetch_assoc($dsn,$res);
echo $row['cnt'];
//古いデータを削除
$sql = 'DELETE FROM rss_feed WHERE date < ?';
$stmt = $dbh->prepare($sql);
$date = date('Y-m-d H:i:s', strtotime('-1 week'));
$stmt->execute([$date]);
} catch (PDOException $e) {
echo $e->getMessage(); // err時はメッセージを表示
exit;
}
?>
No.1ベストアンサー
- 回答日時:
PHP7ではもうmysql_*関数は廃止されています
PDOなど一般的なやり方にシフトしてください
了解いたしました。
http://weble.org/2010/01/02/php-mysql-table-col
https://lpeg.info/webworks/server_moving_mysqli. …
mysqliに変換する方法もあったのですが、その場合$dsnが間違っているのでしょうか?
勉強のためにお聞きしておきたいです…
$sql = 'select count(*) as cnt from rss_feed';
$res = mysqli_query($dsn, $sql);
$row = mysqli_fetch_assoc($dsn,$res);
echo $row['cnt'];
No.3
- 回答日時:
知識が乏しいなら余計にmysqli関数はやめてPDOをおすすめします
WEB上のナレッジサイトも情報量が違います。
No.2
- 回答日時:
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$result = mysqli_exec($link, $sql);
while ($row = mysqli_fetch_assoc($result)){
・・・
みたいな感じでは?
勉強不足で申し訳ないのですが、while ($row = mysqli_fetch_assoc($result)){の後述がわかりません…
下記のようにしてRSSで1ページあたりの数を制限したい場合、どのような構想になるのでしょうか?
データベースから$titleの数をmysqli_fetch_assocで取得して、total数と1ページあたりの数を使いコンテンツの重複を避けるよう考えております。
$perPage = 36; // 1ページあたりのデータ件数
//「URLのパラメータにpageが存在しない場合」「pageが0以下」「pageがトータルページを超えている場合」に1ページ目を表示するように処理しています。9行目では悪意のある値を受け付けないように数値にキャスト(変換)しています。
$totalPage = 10; // 最大ページ数
if (
isset($_GET["page"]) &&
$_GET["page"] > 0 &&
$_GET["page"] <= $totalPage
) {
$page = (int)$_GET["page"];
} else {
$page = 1;
}
$page = (int) $_GET['page'];//現在のページ番号
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
人気Q&Aランキング
-
4
phpでmysqlを使ってデータベー...
-
5
検索結果($_POST)が2ページ目...
-
6
PHP+MySQLでの配列のinsert文に...
-
7
ページ間の値の受け渡しについて
-
8
検索結果にラジオボタンを付加...
-
9
MySQLに保存した画像を表示したい
-
10
SELECT結果から動的にコンボボ...
-
11
PHP+MySQL テーブルが表示され...
-
12
SQLiteのhtml表示
-
13
checkboxクリック時、SQLを実行...
-
14
VBAをつかってクエリの情報を抽...
-
15
JAVA SQLServerException 列名 ...
-
16
Pro*Cの構文エラー
-
17
エラー3011
-
18
MDB2エラーが対応出来ません。
-
19
PHP初心者です。syntax error, ...
-
20
MySQLでデータベースにデータin...
おすすめ情報
公式facebook
公式twitter