php - cs50 pset7 php查询函数where子句中的未知列

标签 php mysql sql

不知道为什么会说“YHOO”是 where 子句中的未知列。我的投资组合表中有一个名为“符号”的列

$id = 6;
$symbol = "YHOO";
$shares_query = query("SELECT shares FROM portfolio WHERE id = $id AND symbol = $symbol");

查询功能由cs50工作人员定义

function query(/* $sql [, ... ] */)
{
    // SQL statement
    $sql = func_get_arg(0);

    // parameters, if any
    $parameters = array_slice(func_get_args(), 1);

    // try to connect to database
    static $handle;
    if (!isset($handle))
    {
        try
        {
            // connect to database
            $handle = new PDO("mysql:dbname=" . DATABASE . ";host=" . SERVER, USERNAME, PASSWORD);

            // ensure that PDO::prepare returns false when passed invalid SQL
            $handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
        }
        catch (Exception $e)
        {
            // trigger (big, orange) error
            trigger_error($e->getMessage(), E_USER_ERROR);
            exit;
        }
    }

    // prepare SQL statement
    $statement = $handle->prepare($sql);
    if ($statement === false)
    {
        // trigger (big, orange) error
        trigger_error($handle->errorInfo()[2], E_USER_ERROR);
        exit;
    }

    // execute SQL statement
    $results = $statement->execute($parameters);

    // return result set's rows, if any
    if ($results !== false)
    {
        return $statement->fetchAll(PDO::FETCH_ASSOC);
    }
    else
    {
        return false;
    }
}

像我期望的那样进行查询解析转储 SELECT Shares FROM Portfolio WHERE id = 6 AND symbol = YHOO

最佳答案

您应该更改代码,以便转义输入,正如评论中已经提到的那样。

要使代码正常工作,您需要在输入周围添加 ',如下所示:

$id = 6;
$symbol = "'YHOO'";
$shares_query = query("SELECT shares FROM portfolio WHERE id = $id AND symbol = $symbol");

编辑:检查您的查询函数后,我认为这是解决问题的正确方法:

$id = 6;
$symbol = "YHOO";
$shares_query = query("SELECT shares FROM portfolio WHERE id = ? AND symbol = ?", $id, $symbol);

关于php - cs50 pset7 php查询函数where子句中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206863/

相关文章:

javascript - JQuery .change(function..) 在 DataTables 第 2 页或第 11 行之后不起作用

php - PayPal IPN 停止工作 - curl 35 错误

MySQL 全文搜索,为什么我得到不正确的 MATCH 参数

mysql在一列中加入多个值

sql - 如何使用嘈杂的 GPS 数据有效地检测位置变化?

PHP 将变量附加到字符串的末尾

PHP MySQL 数据库类不适用于插入

mysql - CakePHP MySQL 重复运算符操作数无效 - 生成的 SQL 工作正常,但蛋糕报告错误

java - 如何使用比较器对集合中的多个字段进行排序?

php - Laravel 路由在实时服务器上导致 404 错误