首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从MySQL迁移到MySQLi

从MySQL迁移到MySQLi
EN

Stack Overflow用户
提问于 2013-06-19 20:13:59
回答 4查看 1.6K关注 0票数 2

有人能给我指个方向吗?我正在从MySql过渡到MySqli的过程中。通常,我会使用下面的代码从数据库中进行选择,这样我就可以轻松地将列值用作工作变量:

代码语言:javascript
运行
复制
$SQLCommand = "SELECT * FROM table WHERE column1 = 'ok'";
$Data = mysql_query($SQLCommand);
$DataRow = mysql_fetch_assoc($Data);

$var1 = $DataRow["column1"];
$var2 = $DataRow["column2"];
$var3 = $DataRow["column3"];
$var4 = $DataRow["column4"];

我已经研究了如何做MySql等价物,但我发现使用循环等有很多不同的方式。有没有一个like (因为缺乏更好的描述)可以做同样的事情?提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-20 14:42:55

我不想随波逐流,而是建议使用PDO替代方案

代码语言:javascript
运行
复制
$db = new PDO($dsn, 'username','password'); 
              //$dsn is the connection string to your database.
              //See documentation for examples

//The next two rows are optional, but i personally suggest them to
//ease developing, debugging (the 1st) and fetching results (the 2nd)

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

$stmt = $db->prepare("SELECT * FROM table WHERE column1 = :c1");
$stmt->bindValue(':c1', 'ok'); //This example is trivial and not necessary
                               //but it gains relevance when the bound value 
                               //is a variable
$rows = $stmt->fetchAll(); //if you expect a single row use fetch() instead

//do something with the results

你可以在这里阅读更多关于PDO的内容:PDO manual

PDO最大的优点是它独立于应用程序使用的实际数据库。如果偶然想要在将来更改数据库,例如SQLITE或PostgreSQL,您必须进行的唯一*更改是$dsn连接字符串

*仅当使用标准SQL查询而不使用特定于供应商的查询时,才为True。

票数 4
EN

Stack Overflow用户

发布于 2013-06-19 20:18:07

直接转换为:

代码语言:javascript
运行
复制
$Data = mysqli_query($connection, $SQLCommand);
$DataRow = mysqli_fetch_assoc($Data);

i不同的是,mysqli_query需要将连接作为参数(大多数mysqli_*函数也是如此)。

MySQLi也有一个面向对象的风格:

代码语言:javascript
运行
复制
$Data = $connection->query($SQLCommand); // assuming you created the $connection object
$DataRow = $data->fetch_assoc();
票数 2
EN

Stack Overflow用户

发布于 2013-06-19 20:15:10

他们应该像这样

代码语言:javascript
运行
复制
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
$SQLCommand = "SELECT * FROM table WHERE column1 = 'ok'";
$Data = $mysqli->query($SQLCommand);   
$DataRow = $mysqli->fetch_assoc($Data);

尝试此

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17190881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档