PHP-将PDO转换为普通代码

PHP-将PDO转换为普通代码,php,mysql,Php,Mysql,我想知道是否有人能帮我 我正在尝试将一些代码集成到我的应用程序中,我需要集成的代码是用PDO语句编写的,我不知道它是如何运行的 我想知道是否有人能帮我转换它 代码如下 $sql = "insert into message2 (mid, seq, created_on_ip, created_by, body) values (?, ?, ?, ?, ?)"; $args = array($mid, $seq, '1.2.2.1', $currentUser, $body); $stmt = $

我想知道是否有人能帮我

我正在尝试将一些代码集成到我的应用程序中,我需要集成的代码是用PDO语句编写的,我不知道它是如何运行的

我想知道是否有人能帮我转换它

代码如下

$sql = "insert into message2 (mid, seq, created_on_ip, created_by, body) values (?, ?, ?, ?, ?)";
$args = array($mid, $seq, '1.2.2.1', $currentUser, $body);
$stmt = $PDO->prepare($sql);
$stmt->execute($args);
if (empty($mid)) {
    $mid = $PDO->lastInsertId();
}
$insertSql = "insert into message2_recips values ";
$holders = array();
$params = array();
foreach ($rows as $row) {
    $holders[] = "(?, ?, ?, ?)";
    $params[] = $mid;
    $params[] = $seq;
    $params[] = $row['uid'];
    $params[] = $row['uid'] == $currentUser ? 'A' : 'N';
}
$insertSql .= implode(',', $holders);
$stmt = $PDO->prepare($insertSql);
$stmt->execute($params);

由于某些技术原因,您应该使用PDO unles。如果你不知道,就去学吧。也许这会让你开始:

/* 
This the actual SQL query the "?" will be replaced with the values, and escaped accordingly 
- ie. you dont need to use the equiv of mysql_real_escape_string - its going to do it 
autmatically 
*/
$sql = "insert into message2 (mid, seq, created_on_ip, created_by, body) values (?, ?, ?, ?, ?)";

    // these are the values that will replace the ?
    $args = array($mid, $seq, '1.2.2.1', $currentUser, $body);

    // create a prepared statement object
    $stmt = $PDO->prepare($sql);

    // execute the statement with $args passed in to be used in place of the ?
    // so the final query looks something like:
    // insert into message2 (mid, seq, created_on_ip, created_by, body) values ($mid, $seq, 1.2.2.1, $currentUser, $body)
    $stmt->execute($args);


    if (empty($mid)) {
        // $mid id is the value of the primary key for the last insert
        $mid = $PDO->lastInsertId();
    }

    // create the first part of another query
    $insertSql = "insert into message2_recips values ";

    // an array for placeholders - ie. ? in the unprepared sql string
    $holders = array();

    // array for the params we will pass in as values to be substituted for the ?
    $params = array();

    // im not sure what the $rows are, but it looks like what we will do is loop
    // over a recordset of related rows and do additional inserts based upon them
    foreach ($rows as $row) {
        // add a place holder string for this row
        $holders[] = "(?, ?, ?, ?)";

        // assign params
        $params[] = $mid;
        $params[] = $seq;
        $params[] = $row['uid'];
        $params[] = $row['uid'] == $currentUser ? 'A' : 'N';
    }
    // modify the query string to have additional place holders
    // so if we have 3 rows the query will look like this:
    // insert into message2_recips values (?, ?, ?, ?),(?, ?, ?, ?),(?, ?, ?, ?)
    $insertSql .= implode(',', $holders);

    // create a prepared statment
    $stmt = $PDO->prepare($insertSql);

    // execute the statement with the params
    $stmt->execute($params);

PDO真的更好。它具有与MySQLi相同的功能,但具有跨数据库驱动程序的一致接口(即,只要您的SQL与不同的数据库兼容,理论上您就可以将完全相同的php代码与mysql、sqlite、postresql等一起使用),并为准备好的语句提供更好的参数绑定。既然您不应该以任何方式使用
mysql
扩展,而且使用MySQLi比使用PDO更麻烦,除非您特别需要支持旧版本的PHP,否则使用MySQLi真的很容易。

PDO模块怎么不是“普通代码”?你到底想把它转换成什么?大概是从PDO转换成MySQL/MySQLiOh是的,很抱歉。。。我已经习惯了mysql语句使用PDO和准备好的语句。你应该学习如何使用PDO。不要回到mysql扩展的石器时代。至少在准备好的语句中使用mysqli,但如果这样做,PDO就真的不那么遥远了。如果您真的想使用mysql扩展重写它,那么代码中有两条SQL语句需要重写。尝试一下应该不会太难。嘿,谢谢你。。。。是的,我不能在这个项目中使用PDO语句的原因是我使用的是一个不使用PDO的框架听起来你不应该使用这个框架-它是哪一个?嗯,CodeIgniter确实有一个PDO db驱动程序。哦,哈哈哈,好吧,我必须研究一下。。。谢谢你的帮助