0 レビュー
2 回答
php-mysqlからPDOへの変換
コードをmysql_*
からPDO
に書き直し、これを実行しながら学習しますが、私はこれで少し立ち往生。 [][][][]
を実行すると、答えが空になります。これは古いコードです
$objConnect = mysql_connect("localhost","root","");
$objDB = mysql_select_db("mytable");
mysql_query("SET NAMES 'UTF8'");
$strSQL = "SELECT * FROM table";
$objQuery = mysql_query($strSQL);
$intNumField = mysql_num_fields($objQuery);
$resultArray = array();
while($obResult = mysql_fetch_array($objQuery))
{
$arrCol = array();
for($i=0;$i<$intNumField;$i++)
{
$arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i];
}
array_push($resultArray,$arrCol);
}
mysql_close($objConnect);
echo json_encode($resultArray);
そしてこれが私が試していることです
include'database.php';
$ pdo = Database :: connect();
$ pdo-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION);
$ strSQL = "SELECT*FROMテーブル";
$ resultArray = array();
foreach($ pdo-> query($ strSQL)as $ res)
{{
$ arrCol = array();
for($ i = 0; $ i <$ strSQL; $ i ++)
{{
$ arrCol [mysql_field_name($ res、$ i)] = $ strSQL [$ i];
}
array_push($ resultArray、$ arrCol);
}
echo json_encode($ resultArray);
わからない
0
レビュー
答え :
解決策:
いいえ、 mysql_field_name
は現在使用しているPDOAPIと混合しません。
全体を通してPDOを使用して記述してください。 fetch()
して、追加のフラグ PDO::FETCH_ASSOC
を設定するだけです。列名付き/数値インデックスなしで返されます。
include'database.php';
$ pdo = Database :: connect();
$ pdo-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION);
$ strSQL ='SELECT*FROMテーブル';
$ resultArray = array();
$ res = $ pdo-> query($ strSQL);
while($ row = $ res-> fetch(PDO::FETCH_ASSOC)){
$ resultArray [] = $ row;
}
echo json_encode($ resultArray);
追加情報:
同じフラグを使用して->fetchAll()
を使用することで、そのループを省略することもできます:
$ resultArray = $ res-> fetchAll(PDO::FETCH_ASSOC);
わからない
0
レビュー
答え :
解決策:
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo json_encode(
$pdo->query(
'SELECT * FROM soFoo'
)->fetchAll()
);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。