标签: pdo

PDO 中的联合选择不起作用

我是使用 PDO 发出数据库请求的新手,需要一点帮助。我有以下数据库调用:

$stmt1 = $pdo->prepare('
    SELECT * FROM news WHERE pub_date >= ? AND pub_date < ? AND display = 1 ORDER BY pub_date DESC
    UNION
    SELECT * FROM vs_news WHERE pub_date >= ? AND pub_date < ? AND display = 1 ORDER BY pub_date DESC
');
$stmt1->bindParam(1, $col_start);
$stmt1->bindParam(2, $col_end);
$stmt1->execute();
Run Code Online (Sandbox Code Playgroud)

我已经阅读了足够多的内容,认为 UNION 与 PDO 兼容,但我似乎无法正确获取代码,也找不到完整代码格式的示例。

两个表中的字段相同,并且 db 调用仅适用于一个或另一个表,但不适用于我展示的 UNIION。

有人可以指出我的问题在哪里吗?

谢谢

php pdo

-1
推荐指数
1
解决办法
5902
查看次数

错误 PDO 插入:SQLSTATE[HY093]:参数数量无效:绑定变量的数量与标记数量不匹配

我正在尝试使用 PDO id_facebook (mysql bigint)、name(mysql varchar) 和 email(mysql varchar) 插入,但无法解决此错误,PDO 语法看起来正确,可以是什么?

public static function inserirUsuarioFacebook($id_facebook, $nome, $email)
{
    try
    {
        $pdo = Conexao::getInstance();

        $consulta = $pdo->prepare("INSERTO INTO usuario_facebook (id_facebook, nome, email) VALUES (:id_facebook, ':nome', ':email')");
        $consulta->bindParam(':id_facebook', $id_facebook, PDO::PARAM_INT);
        $consulta->bindParam(':nome', $nome, PDO::PARAM_STR);
        $consulta->bindParam(':email', $email, PDO::PARAM_STR);
        $consulta->execute();   
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}
Run Code Online (Sandbox Code Playgroud)

php mysql pdo insert

-1
推荐指数
1
解决办法
8348
查看次数

SQL限制会产生不良结果

我在使用SQL LIMIT语句时遇到问题.我有21条记录存储在数据库中,我想分段得到结果.我写了这个查询:

"SELECT * FROM table JOIN another_table ON XXX = YYY WHERE XXX = ? ORDER BY col DESC LIMIT ?, ?"
Run Code Online (Sandbox Code Playgroud)

这是我使用此值时获得的行数:

LIMIT:  0 .. 10  --->  num of rows 10     -> Correct
LIMIT: 10 .. 20  --->  num of rows 11     -> Incorrect
LIMIT: 20 .. 30  --->  num of rows 0      -> Incorrect
Run Code Online (Sandbox Code Playgroud)

代码用于php函数和数据库操作我使用PDOStatement类,但这个错误也表现在使用MySQLi类.

有谁知道问题在哪里?

php sql mysqli pdo

-1
推荐指数
1
解决办法
84
查看次数

PHP?PDO或mySQLi

只需编写PHP网站并使用mySqli进行数据库连接.真的很享受它,因为我可以使用Prepare语句,然后执行一个$result = $stmt->get_result();将结果加载到关联的数组中.但是,最好是时候将几页和数据库上传到托管站点以测试速度,并发现它不支持该$stmt->get_result();命令,需要使用我的主机不支持的mysqlnd驱动程序.

调查这一点也不是许多主机提供商.现在,当我启动网站时,我回头看了一些旧的PHP代码,显然我以前使用的正常mySql代码已经过时,并且在互联网上被告知使用mySQLi只是为了发现对此的支持正在下降到?!所以它会看到,那么最好使用的mySql连接是什么?

php mysql mysqli pdo

-1
推荐指数
1
解决办法
6349
查看次数

prepare()函数出错

我有这个登录页面,我在看Udemy的教程时写了它.他的代码工作正常,但在我的代码(相同)中,我有以下错误:

致命错误:在非对象上调用成员函数prepare()

这是代码:

<?php
    //$var = 'This is our first web app page';
    //echo $var;

    //Connection Variables:
    $dbhost = "localhost";
    $dbname = "graphic_db";
    $dbuser = "root";
    $dbpass = "root";

    //Connection to SQL:
    $conn = new PDO("mysql:host=$dbhost; dbname=$dbname", $dbuser, $dbpass);
    //Error messagin enabled:
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //Adding a character set:
    $conn = exec("SET CHARACTER SET utf8mb4");

    $user = '';
    $pass = '';
    $sum = 0;
    $error_msg = "Please type a username and a password";
    if(isset($_POST['login_submit']))
    {
        //Start a session:
        session_start();
        $user = …
Run Code Online (Sandbox Code Playgroud)

html php mysql sql pdo

-1
推荐指数
1
解决办法
34
查看次数

未定义的属性:PDO :: $ affected_rows

编辑我的旧代码后,我得到错误Undefined property: PDO::$affected_rows,这里的部分if ($this->dbCon->affected_rows > 0) 可以帮助我解决这个问题

class Relation {

private $loggedInUser;
private $dbCon;
public function getRelationship(User $user) {
        $user_one = (int) $this->loggedInUser->getUserId();
        $user_two = (int) $user->getUserId();
        if ($user_one > $user_two) {
            $temp = $user_one;
            $user_one = $user_two;
            $user_two = $temp;
        }
        $resultObj = $this->dbCon->prepare('SELECT * FROM relationship WHERE user_one_id=:user_one AND user_two_id=:user_two');
        $resultObj->execute(array(':user_one' => $user_one,':user_two' => $user_two));
        if ($this->dbCon->affected_rows > 0) {
            $row = $resultObj->fetch(PDO::FETCH_ASSOC);
            $relationship = new Relationship();
            $relationship->arrToRelationship($row, $this->dbCon);
            return $relationship;
        }
        return false;
    } …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

-1
推荐指数
1
解决办法
1048
查看次数

pdo bindParam与关联数组

我试图用一个关联数组bindParams,循环通过foreach,但我不知道它以某种方式工作.我收到此错误:

SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配

这是代码.var $columns$values来自数组,被操纵,所以它接受它们就像x, x, x:x, :x, :x

$stmt1 = $conn->prepare("INSERT INTO data($columns) 
VALUES ($values)");
foreach ($array as $key => $value) 
{
    $key = ":" . $key;
    $stmt1->bindParam($key, $value);
    $stmt1->execute();  
}
Run Code Online (Sandbox Code Playgroud)

我很确定这些列正在对数组中的键进行管理.

编辑:更多的代码

$values = '';
$columns = implode(',', $array);
foreach($array as $key)
{
    $values .= ":" . $key . ",";
}
$values = substr($values , 0, -1);
Run Code Online (Sandbox Code Playgroud)

php mysql arrays pdo associative-array

-1
推荐指数
1
解决办法
1046
查看次数

使用PDO将数组插入数据库的最佳实践

我正在尝试将数组内容添加到数据库中.因为它我正在使用

$arr = ["10","11","12","13"];

foreach ($arr as $value) {
    $sql = "INSERT INTO `test` (user_id, view) VALUES (:user_id, :view)";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(':user_id', $value);
    $stmt->bindParam(':view', 'small');
    $stmt->execute();
}
Run Code Online (Sandbox Code Playgroud)

是好的做法还是坏的?还有其他好方法吗?

php mysql pdo

-1
推荐指数
1
解决办法
455
查看次数

PHP MySQL - 选择 id 不等于 2 个 id 之一的位置

所以我尝试随机选择 2 行,但 id 不允许等于 x 或等于 y。

这就是我到目前为止所尝试的:

  $statment = $db -> "SELECT * FROM player ORDER BY RAND() LIMIT 2 WHERE 
              NOT(id = ?) OR WHERE NOT(id=?)";
  $statement->execute(array($player1, $player2));
Run Code Online (Sandbox Code Playgroud)

但得到:

解析错误:语法错误,意外的“SELECT * FROM player ORDER BY”(T_CONSTANT_ENCAPSED_STRING),期望标识符(T_STRING)或变量(T_VARIABLE)

php sql pdo equals

-1
推荐指数
1
解决办法
2583
查看次数

PDO查询返回true但 - > fetch()返回错误

我正在尝试使用PDO从我的数据库中选择信息.直到->prepare()->execute()方法正常工作的一切.转储响应时,我得到一个布尔值true响应.

但是一旦我使用->fetchAll()我就会收到以下错误:

致命错误:在布尔值中调用成员函数fetchAll()....

我不确定为什么会这样.我应该在结果中收到一行.代码如下:

    $host = 'localhost';
    $db   = 'database';
    $user = 'useername';
    $pass = 'password';
    $charset = 'utf8mb4';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $connection = new PDO($dsn, $user, $pass, $opt);
    $connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    $query = 'SELECT * FROM gen_dealers WHERE dealer = ?';
    $result = $connection->prepare($query)->execute(['General Motors']);

    echo $result; // returns 1

    $result->fetchAll(PDO::FETCH_UNIQUE); // returns the Fatal error mentioned above
Run Code Online (Sandbox Code Playgroud)

php pdo

-1
推荐指数
1
解决办法
232
查看次数

标签 统计

pdo ×10

php ×10

mysql ×6

sql ×3

mysqli ×2

arrays ×1

associative-array ×1

equals ×1

html ×1

insert ×1