从mysql php脚本转换为pdo
我实际上是PDO的新手 在这里,我试图从mysql中获取数据并用xml显示 我已经用mysql完成了,但是我不能用PDO完成 这是我的PHP代码从mysql php脚本转换为pdo,php,mysql,xml,pdo,Php,Mysql,Xml,Pdo,我实际上是PDO的新手 在这里,我试图从mysql中获取数据并用xml显示 我已经用mysql完成了,但是我不能用PDO完成 这是我的PHP代码 <?php error_reporting(E_ALL); $host = "localhost"; $user = "root"; $pass = "root"; $database = "my_db"; // replace by a real *.xsl file, e.g. // $xslt_
<?php
error_reporting(E_ALL);
$host = "localhost";
$user = "root";
$pass = "root";
$database = "my_db";
// replace by a real *.xsl file, e.g.
// $xslt_file = "exam.xsl";
$xslt_file = FALSE;
// If true, will output XML without XSLT
$raw = TRUE;
$SQL_query = "SELECT * FROM `battery` order by waste asc";
$DB_link = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $DB_link) or die ("Could not find or access the database.");
$result = mysql_query ($SQL_query, $DB_link) or die ("Data not found. Your SQL query didn't work... ");
$left = "<";
$right = ">";
if ($xslt_file or $raw) {
// we produce XML
header("Content-type: text/xml");
$XML = "<?xml version=\"1.0\"?>\n";
if (!$raw) $XML .= "<?xml-stylesheet href=\"$xslt_file\" type=\"text/xsl\" ?>";
}
else {
// we produce HTML. All XML tags are replaced by printable entities
$XML = "Don't forget to create an XSLT file .... <p>";
$XML .= "<pre>\n";
$left = "<";
$right = ">";
}
// root node
$XML .= $left . "result" . $right . "\n";
// rows
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$XML .= "\t" . $left. "row" . $right . "\n"; // creates either "<row>" or "<row>"
$i = 0;
// cells
foreach ($row as $cell) {
// Escaping illegal characters
$cell = str_replace("&", "&", $cell);
$cell = str_replace("<", "<", $cell);
$cell = str_replace(">", ">", $cell);
$cell = str_replace("\"", """, $cell);
$col_name = mysql_field_name($result,$i);
// creates the "<tag>contents</tag>" representing the column, either as XML or for display in HTML
$XML .= "\t\t" . $left . $col_name . $right . $cell . $left . "/" . $col_name . $right ."\n";
$i++;
}
$XML .= "\t" . $left. "/row" . $right . "\n";
}
$XML .= $left . "/result" . $right . "\n";
echo $XML;
if (!$xslt_file && !$raw) echo "</pre>";
?>
我尝试了很多,但是我不能用PDO来完成
求你了,我需要帮助。
任何帮助都将不胜感激
我试过的PDO代码是
$q = $dbh->prepare("DESCRIBE tablename");
$q->execute();
$table_fields = $q->fetchAll(PDO::FETCH_COLUMN);
fetch(PDO::fetch_ASSOC)){
$XML.=“\t..$left.”行“..$right.”\n“//创建“”或“行”
$i=0;
//细胞
foreach($行作为$单元格){
//转义非法字符
$cell=str_替换(“&”、“&;”、$cell);
$cell=str_replace(“,”,$cell);
$cell=str\u替换(“\”,“,$cell”);
$col_name=$result->fetchAll(PDO::FETCH_列);
//创建表示列的“内容”,可以是XML格式,也可以是HTML格式
$XML.=“\t\t”。$left.$col\u name.$right.$cell.$left./”$col\u name.$right.\n”;
$i++;
}
$XML.=“\t..$left./row..$right.\n”;
}
$XML.=$left。“/结果”$正确的。“\n”;
echo$XML;
if(!$xslt_文件&!$raw)echo“”;
?>
但是它没有显示任何内容获取列名的正确方法是
$dbhost = "localhost";
$dbname = "testcreate";
$dbuser = "root";
$dbpass = "mysql";
try {
$db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf-8', ''.$dbuser.'', ''.$dbpass.'');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Error : <br>' . $e->getMessage();
}
但是,在获取assoc时,您可以将foreach循环更改为:
$db->query(SELECT * FROM node WHERE node_name='$nodename'");
可能还有其他问题,您是否尝试过在每个PDO函数调用的结果上使用print\r来检查它在哪一点失败?您是这样连接到数据库的:
$query = $db->query(SELECT * FROM node WHERE node_name='$nodename'");
$row = $query->fetch(PDO::FETCH_OBJ);
我们这样取:
$query = $db->query(SELECT * FROM node WHERE node_name='$nodename'");
$row = $query->fetch(PDO::FETCH_OBJ);
现在您可以使用$row->name
作为示例
下面是关于PDO::FETCH的更多信息
- PDO::FETCH_ASSOC:返回一个按列名索引的数组,该数组在结果集中返回
- PDO::FETCH_eath(默认):返回一个数组,该数组按结果集中返回的列名和0索引列编号进行索引
- PDO::FETCH_-BOUND:返回TRUE,并将结果集中列的值赋给它们所属的PHP变量
与PDOStatement::bindColumn()方法绑定 - PDO::FETCH_CLASS:返回请求类的新实例,将结果集的列映射到
班级。如果fetch_样式包括PDO::fetch_类类型(例如
PDO::FETCH_CLASS|PDO::FETCH_CLASS类型)然后是类的名称
由第一列的值确定 - PDO::FETCH_INTO:更新请求类的现有实例,将结果集的列映射到
班级 - PDO::FETCH_LAZY:将PDO::FETCH_和PDO::FETCH_OBJ组合在一起,在访问对象变量时创建它们的名称
- PDO::FETCH_NUM:返回一个数组,该数组由结果集中返回的列编号索引,从列0开始
- PDO::FETCH_OBJ:返回一个匿名对象,其属性名与结果集中返回的列名相对应
其中是
PDO
code,这是所有的mysql
code@yogeshuthar:fetchAll(PDO::FETCH_列);?>将此代码粘贴到您的问题中而不是注释中。您如何在PDO代码中创建$result
。不要对你能找到的每一个问题都发垃圾邮件。
$query = $db->query(SELECT * FROM node WHERE node_name='$nodename'");
$row = $query->fetch(PDO::FETCH_OBJ);