【问题标题】:PDO gives empty arrayPDO 给出空数组
【发布时间】:2023-04-01 17:45:01
【问题描述】:

我正在尝试使用 PDO 发出请求并从数据库中获取响应,但它总是返回空数组。


我的代码:

【问题讨论】:

  • 在此处添加 oyur 代码而不是链接

标签: php html pdo


【解决方案1】:

请不要使用这个功能,很多方面都错了。

如果你想跟上这种功能,至少要这样

function dataQuery($query, $params = array())
{
    static $dbh;

    if (!$dbh)
    {
        $dbh = new PDO('mysql:host=hostname;dbname=dbname;charset=utf8', USER, PASS);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    $stmt = $dbh->prepare($query);
    $stmt->execute($params);
    return $stmt;
}

然后就这么用了

function pleaseWork() {
    return dataQuery("SELECT * FROM `grupy`")->fetchAll();
}

$work = pleaseWork();
echo '<pre>';
print_r($work);

请注意,当查询中没有要使用的参数时,您也不必提供它们。

【讨论】:

  • 它现在可以工作,但它无法获取 utf-8 字符,我该如何设法获取它们?
  • 我现在如何将其转换为 javascript 变量并在控制台记录它?我从这个板上尝试了很多方法,但都没有成功。
  • 使用 json_encode 或者更好地问另一个问题如何将 PHP 数据发送到 JS,因为这个话题已经被移得太远了
  • 所以谈论这个线程。为什么这段代码将变量加倍?像这样:screenshot
  • 默认 PDO 行为的原因。您可以直接在调用中覆盖它,fetchAll(PDO::FETCH_ASSOC); 或全局(首选),通过将 PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC 设置为连接选项
【解决方案2】:

我不明白为什么查询不起作用,除了“SELECT”是什么?删除:

&& 'SELECT' == $queryType[0]

来自

if($queryResults != null && 'SELECT' == $queryType[0]) {

【讨论】:

  • 删除了,还是一样。
猜你喜欢
  • 2014-02-02
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多