感谢您是否可以帮我将下面的mysql代码写入PDO语句。
$sql = "SELECT * FROM node WHERE node_name='$nodename'";
$result = mysql_query($sql);
当我阅读PDO :: query Manual时,我发现了这段代码
<?php
$connection = new pdo("sqlite:file.sq3");
$query="SELECT * FROM table";
$result = $connection->query($query);
$row = $result->fetch(PDO::FETCH_ASSOC);
print_r($row);
?>
“sqlite:file.sq3”和“(PDO :: FETCH_ASSOC)”的功能是什么
答案 0 :(得分:0)
该行指向您的sql文件,它没有任何功能。它会打开一个PDO连接,您可以进一步查询。
$connection = new pdo("sqlite:/path/to/sql/file.sq3");
PDO::FETCH_ASSOC
告诉函数fetch()
从表中提取关联数组。
答案 1 :(得分:0)
你连接到这样的数据库:
try {
$db = new PDO("sqlite:file.sq3");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Error : <br>' . $e->getMessage();
}
PS:你不需要尝试和捕获,但我们过去常常得到错误并以一种很好的方式处理它
接下来我们这样查询:
$db->query(SELECT * FROM node WHERE node_name='$nodename'");
我们这样取得:
$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_BOTH (默认值):返回由结果集中返回的列名和0索引列号索引的数组
PDO :: FETCH_BOUND :返回TRUE,并将结果集中列的值分配给它们所属的PHP变量 与PDOStatement :: bindColumn()方法绑定
PDO :: FETCH_CLASS :返回所请求类的新实例,将结果集的列映射到中的命名属性 类。如果fetch_style包含PDO :: FETCH_CLASSTYPE(例如, PDO :: FETCH_CLASS | PDO :: FETCH_CLASSTYPE)然后是班级的名称 由第一列的值确定。
PDO :: FETCH_INTO :更新请求类的现有实例,将结果集的列映射到中的命名属性 班级
PDO :: FETCH_LAZY :组合PDO :: FETCH_BOTH和PDO :: FETCH_OBJ,在访问时创建对象变量名称
PDO :: FETCH_NUM :返回按结果集中返回的列号索引的数组,从第0列开始
PDO :: FETCH_OBJ :返回一个匿名对象,其属性名与结果集中返回的列名相对应
答案 2 :(得分:0)
如果您之前使用的是MySQL,我认为sqlite DSN不适合您。 SQLite是RDBMS的另一个品牌,它与MySQL不兼容。
要使用PDO连接到MySQL,请参阅本手册页:http://www.php.net/manual/en/ref.pdo-mysql.connection.php
示例:
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'username';
$password = 'password';
$dbh = new PDO($dsn, $username, $password);