PHP と MySQL でテーブルの行数を調べる関数を作っ

Writer: admin Type: booksonline Date: 2019-03-06 00:00
PHP と MySQL でテーブルの行数を調べる関数を作っているのですがechoでrow['cnt']を表示させようとしてもエラーが出ます。それとテーブル内にデータがなかった場合0を返したいのですがどのようにやればいいですが?function table_col($str) { $link=mysqli_connect(HOST,DB_USER,DB_PASS,DB_NAME); if(!$link){ echo 'データベースが存在しません'; exit; } $sql = 'select count(*) as cnt from '.$str; $res = mysql_query($link,$sql); $row = mysql_fetch_assoc($res); return $row['cnt'];}table_col(db_name);echo $row[cnt];共感した0####mysql関数に関しては、すでに指摘があるので割愛>table_col(db_name);>echo $row[cnt]; 何のために関数にしてその戻り値を得ているのでしょうか?$ret = table_col(db_name);echo $ret; と書くかecho table_col(db_name);と書かないと意味がないです(そもそも$rowという配列は関数外では使えない)。ナイス0
###この回答は投票によってベストアンサーに選ばれました!###mysqli_connect()ってmysqli系を使ってるのにその後はmysql_query()やmysql_fetch_assoc()ってmysql系の関数使ってるのはなぜだ?mysql系の関数は使うな推奨されない関数になってもう何年も経ってるぞ?mysql系の関数使ってる本を読んでるならそんなゴミは今すぐ捨てろwebに書いてあったならそんなサイトは見るなmysqli系で統一するかどうせならPDOを使え>table_col(db_name);これだとdb_nameって名前の定数(変数じゃなく)をtable_col()に渡すことになるんだがdefineなりconstなりでそういう定数は定義してんの?しかもさ渡すのはdbの名前じゃなくてテーブルの名前だと思うんだけど?どこかからコピペしてるのか知らんがこんなレベルならまずはベタでsqlを書いてみろ"select count(*) as cnt from xxx;"xxxはテーブル名な>テーブル内にデータがなかった場合0を返したい$row = mysql_fetch_assoc($res);return $row['cnt'];をreturn ($row = mysql_fetch_assoc($res)) ? (int) $row['cnt'] : 0;にすりゃいいまあ君の今のレベルはそんな事やる以前の問題なんでこれは後回しでいいとりあえず基本的なsqlも書けないんじゃ話にならんあとさよく>エラーが出ますって質問するやつがいるが、なんでそのエラーの内容を書かないんだ?そのエラーの中身が一番大事なんだよwプログラミング学習=エラーを見て自己解決する力を身に付ける事といっても過言じゃあないせっかく丁寧なエラーが出てるのになぜそこを無視するw 意味が分からんwwナイス0

 

TAG