相关疑难解决方法(0)

PDO执行数组到字符串转换错误

当我尝试运行PDO执行时,我得到一个数组到字符串转换错误.执行必须输入一个是普通字符串而另一个是数组.继承我的代码:

$id = "1";    
$array = array("a",  "b",  "c");
$in  = str_repeat('?,', count($array) - 1) . '?';

$sql1 = "SELECT * FROM tbl1 AS tb1 RIGHT JOIN tbl2 AS tb2 ON (tb1.e_id = tb2.e_id)LEFT JOIN tbl3 AS tb3 ON (tb2.m_id = tb3.m_id) WHERE tb1.u_id = ? AND tb1.letters IN ($in)";


$statement1 = $db_handle->prepare($sql1);
$statement1->setFetchMode(PDO::FETCH_ASSOC);
$statement1->execute(array($id,$array));

$res = $statement1->fetchAll();
Run Code Online (Sandbox Code Playgroud)

所以执行行给了我字符串转换错误.我打印了我的数组和问号,输出很好.sql语句也没关系,我已经在phpMyAdmin上尝试了它并且工作得很好,所以我没有正确使用执行但我不知道如何改变我执行它的方式.

有人可以向我解释一下吗?

php mysql arrays pdo

4
推荐指数
1
解决办法
1万
查看次数

调用未定义的方法PDO :: fetch()

我知道这里有几个关于这个标题的其他问题,但它们似乎是特定于案例的,或者我无法绕过它,但我在这段代码上得到了这个错误,我无法弄清楚为什么.

$db = new PDO($dsn, $username, $password);
$query = "Select * FROM book INNER JOIN course
          ON book.course = course.courseID
          ORDER BY courseTitle";

//query result
$books = array();
$sth = $db->query($query);
while( $row = $db->fetch(PDO::FETCH_ASSOC) ) {
    $books[] = $row; // appends each row to the array
}
Run Code Online (Sandbox Code Playgroud)

我想也许我的查询错了,所以我尝试了一个PDO教程的例子,我得到了相同类型的错误.我有什么要申报的,或者我要留下什么?

php mysql

3
推荐指数
1
解决办法
3万
查看次数

在dbal上限制sql结果

我在Symfony2上使用dbal从我的表中检索一些信息:

$social = $conn->fetchAll('SELECT * FROM page WHERE  brand_id = :brand LIMIT :start,:limit', array('brand'=>$brand, 'start'=>(int) $start, 'limit'=>(int) $limit));
Run Code Online (Sandbox Code Playgroud)

我只是在添加最后一部分(LIMIT ....)时才收到错误,这让我觉得我不能在sql查询中限制结果但在外面使用某种命令.我怎么解决这个问题?

错误:

An exception occurred while executing 'SELECT * FROM page WHERE brand_id = :brand LIMIT :start,:limit' with params {"brand":1,"start":0,"limit":4}:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0','4'' at line 1
Run Code Online (Sandbox Code Playgroud)

php sql doctrine dbal

3
推荐指数
1
解决办法
2575
查看次数

PDO准备语句限制不起作用

我试图限制从SQL查询返回的结果数量,但由于某种原因它返回NULL.如果我删除LIMIT,一切正常.我在Sequel Pro中测试了这个查询,它也适用于LIMIT.我在这里做错了吗?

 public static function getMostViewedPictures($limit = 5) {
    $dbh = self::connectToDatabase();

    $sql = "SELECT 
                picture.`title`, 
                picture.`description`,
                picture.`slug`,
                picture.`image`,
                picture.`timestamp`,
                picture.`views`,
                category.category as category
            FROM picture 
            LEFT JOIN category 
                ON picture.category_id = category.id
            ORDER BY picture.views ASC
            LIMIT 0, :limit";

    $sth = $dbh->prepare($sql);
    $sth->execute(array(':limit' => $limit));

    if($results = $sth->fetchAll(PDO::FETCH_OBJ)) {
        $pictures = array();

        foreach($results as $result) {
            $pictures[] = new Picture(
                $result->title,
                $result->description,
                $result->slug,
                $result->timestamp,
                $result->category,
                $result->views,
                $result->image
            );
        }

        return $pictures;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

php

2
推荐指数
1
解决办法
3600
查看次数

PDO errorinfo不返回信息

我有代码:

$stmt = $db->prepare(" bla bla ");
$stmt->execute();
print_r($db->errorInfo());
Run Code Online (Sandbox Code Playgroud)

返回: Array ( [0] => 00000 [1] => [2] => )

为什么不返回错误信息?

php pdo

2
推荐指数
1
解决办法
3568
查看次数

为什么在PDO中使用bindParam但不使用array()?

我有2个问题

我经常看到这个

    $sql->bindParam(':xxx', $yyy, PDO::PARAM_zzz);
    $sql->execute();
Run Code Online (Sandbox Code Playgroud)

为什么不使用(1)

$sql->execute(array(':xxx'=>$yyy));
Run Code Online (Sandbox Code Playgroud)

如果有太多的价值我应该使用(2)

    $sql->bindParam(':aaa', $bbb, PDO::PARAM_zzz);
    $sql->bindParam(':ccc', $ddd, PDO::PARAM_zzz);
    $sql->bindParam(':eee', $fff, PDO::PARAM_zzz);
    $sql->execute();
Run Code Online (Sandbox Code Playgroud)

要么

    $sql->execute(array(':aaa'=>$bbb,':ccc'=>$ddd,':eee'=>$fff));
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

2
推荐指数
1
解决办法
284
查看次数

准备好的语句不适用于 ALTER 表查询

我正在编写一个简单的函数,使用 PHP 和 PDO 向表添加一列来准备查询。

连接 ( $dbh) 有效,其他不涉及参数的查询有效。但是,添加列的重要查询却没有。

当我检查数据库时,有一个新列,其中包含名为?(即只是问号)的列以及我指定的所有属性。

我检查以确保$column变量正确通过,此外,执行语句返回 false,因此据称该语句失败,但不知何故仍然创建了一个列。

错误信息不是很有帮助(至少对我来说):

Array ( [0] => 00000 ). 
Run Code Online (Sandbox Code Playgroud)

我检查了代码中是否有简单的拼写错误,但找不到任何东西。有任何想法吗?

$qry='ALTER TABLE `completed` ADD `:column` TINYINT(1) NOT NULL DEFAULT 0';
$stmt = $GLOBALS['dbh']->prepare($qry);
$stmt->bindParam(":column",$column,PDO::PARAM_STR);
$stmt->execute();
$arr = $stmt->errorInfo();
print_r($arr);
$stmt===TRUE ? $return=1 : $return=0;
Run Code Online (Sandbox Code Playgroud)

php mysql sql pdo

2
推荐指数
1
解决办法
2334
查看次数

如何在php中使用mysql IN()函数?

列state属于table2以下varchars并由以下varchars组成:"AL","AK",.. 在我的php代码中,我有以下字符串:$states="AL,AK,AZ,IL"; 我试图在mySQL查询中以下列方式使用它:

$query = SELECT * FROM 'table2' WHERE  'state' IN('$states');
Run Code Online (Sandbox Code Playgroud)

它没有显示任何结果......这些撇号的正确语法是什么?

php mysql sql

1
推荐指数
2
解决办法
140
查看次数

返回PDO数据

大家好我有一个使用mysql_*构建的程序,我试图将其转换为PDO,以确保安全性和折旧

所以我有一个像mysql_*函数设置的负载

return select_from_where('users', '*', "username = '$username' AND password = '$pass'", "LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

我已经转换为PDO

return $conn -> query("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT 1");
Run Code Online (Sandbox Code Playgroud)

但是程序没有提供正确的结果,我不确定它是否甚至返回数据

我的问题是,我是否必须将PDO响应设置为我可以使用的变量,或者是否可以使用与上面类似的方法返回我可以在程序中使用的值?

我为每个函数查询都包含了全局$ conn,所以我确定它是应该连接的,它只是没有按预期提供结果.

有没有人能快速解决这个问题,因为我的程序已经完成并正在等待发布:D

提前致谢

卢克

** 编辑线 *

$sql = ("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT   1");
$stm = $conn->prepare($sql);
$stm->execute(array($username,$pass)); $user = $stm->fetch(); echo $user['username'];
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

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

在非对象PDO上调用成员函数fetchColumn()

试图获取我的项目的列,从未在PDO中这样做,尝试查看文档,但它并没有真正帮助.

  $sql = $CONNECT_TO_DATABASE->query("SELECT COUNT(*) FROM comments");
    $result = $sql->fetch(PDO::FETCH_ASSOC);
    $r = $result->fetchColumn();
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

致命错误:在第6行的C:\ xampp\htdocs\project\events.php中的非对象上调用成员函数fetchColumn()

$r = $result->fetchColumn();
Run Code Online (Sandbox Code Playgroud)

谢谢!

连接:

<?php
/**
* Connect to Database
* @Author Jony <artemkller@gmail.com>
**/
    ##################CHANGE THIS####################
        /**                                         #   
        * MYSQL HOST HERE (Example: localhost)      #
        **/                                         #
                                                    #
        DEFINE ("MYSQL_HOST", "localhost");         #
                                                    #
        /**                                         #
        * MYSQL USER HERE (Example: root)           #
        **/                                         #
                                                    #
        DEFINE ("MYSQL_USER", "root");              #
                                                    #   
        /**                                         #       
        * MYSQL PASSWORD HERE (Example: password)   #
        **/                                         #           
                                                    # …
Run Code Online (Sandbox Code Playgroud)

php pdo

0
推荐指数
1
解决办法
5881
查看次数

为什么 PDO fetchColumn() 在这里不起作用

我正在尝试计算查询返回的行数,我这样做:

$what = 'Norman';
$stmt = $conn->prepare('select names as names from names where names = :what');
$stmt->bindParam('what', $what);
$stmt->execute();
$rows = $stmt->fetchColumn();

echo 'Rows found '.$rows;

$stmt->setFetchMode(PDO::FETCH_ASSOC);

while($row = $stmt->fetch())
{  
    echo $row['names'] . "<br>";
}
Run Code Online (Sandbox Code Playgroud)

但我始终一无所获。只是空白。这样做的正确方法是什么?

php pdo

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×11

pdo ×7

mysql ×6

sql ×3

arrays ×1

dbal ×1

doctrine ×1