不断收到错误警告:PDOStatement::execute() 最多需要 1 个参数,2 在 config.php 第 15 行中给出

Posted

技术标签:

【中文标题】不断收到错误警告:PDOStatement::execute() 最多需要 1 个参数,2 在 config.php 第 15 行中给出【英文标题】:Keep getting error Warning: PDOStatement::execute() expects at most 1 parameter, 2 given in config.php line 15 【发布时间】:2013-07-22 03:49:23 【问题描述】:

这是我的地理位置页面的索引页面

<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
</head>

<body>
<script>
setInterval ( "onPositionUpdate()", 10000 );

var currPosition;
navigator.geolocation.getCurrentPosition(function(position) 
    updatePosition(position);
    setInterval(function()
        var lat = currPosition.coords.latitude;
        var lng = currPosition.coords.longitude;
        $.ajax(
            type: "POST", 
            url:  "myURL/location.php", 
            data: 'x='+lat+'&y='+lng, 
            cache: false
        );
    , 2000);
, errorCallback); 

var watchID = navigator.geolocation.watchPosition(function(position) 
    updatePosition(position);
);

function updatePosition( position )
    currPosition = position;


function errorCallback(error) 
    var msg = "Can't get your location. Error = ";
    if (error.code == 1)
        msg += "PERMISSION_DENIED";
    else if (error.code == 2)
        msg += "POSITION_UNAVAILABLE";
    else if (error.code == 3)
        msg += "TIMEOUT";
    msg += ", msg = "+error.message;

    alert(msg);

</script>
</body>
</html>

这是我的 location.php 页面

<?php
  include ('config.php');

  // database connection
  $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

  // new data

  $x = @$_POST['x'];
  $y = @$_POST['y'];

  // query
  $sql = "update locations set x=?, y=? where username = asd";
  $q = $conn->prepare($sql);
  $q->execute(array($x),($y));

?>

这是我的 config.php 页面

<?php
$dbtype     = "";
$dbhost     = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "";

?>

问题是当我在我的 xampp 上测试我的地理位置时 我不断收到错误警告:PDOStatement::execute() 最多需要 1 个参数,2 在第 15 行的 C:\xampp\htdocs\project_track\myURL\location.php 中给出

我正在尝试制作一个应用程序来跟踪我的位置并将其上传到我的数据库我一直在这个项目上工作了一段时间希望我在正确的轨道上我想知道我该怎么做才能纠正这个问题可以有人请帮忙...我应该如何设置我的数据库这……

我的Sql错了吗

【问题讨论】:

【参考方案1】:

你的执行行应该是:

$q->execute(array($x, $y));

不是吗? Input参数应该是数组的形式,但是你提供了2个参数,一个是数组,另一个是变量。

另外,SQL 不正确。应该是:

update locations set x=?, y=? where username = 'asd'

参考:http://php.net/manual/en/pdostatement.execute.php

【讨论】:

好吧,但我怎么没看到我的 sql 数据库更新我的 lat 和 long... 因为你的SQL不正确。您的用户名值应该用单引号引起来。更好的是,使用主键 ID 来更新而不是使用文本。 我很困惑你在说什么代码应该在哪里单独引用 好的,我已将行更改为您所说的内容,但我的 sql 中根本没有看到任何更新 $x$y的内容是什么?您应该发布生成的 SQL 语句。

以上是关于不断收到错误警告:PDOStatement::execute() 最多需要 1 个参数,2 在 config.php 第 15 行中给出的主要内容,如果未能解决你的问题,请参考以下文章

正在渲染对象数组的数组,不断收到“警告:列表中的每个孩子都应该有一个唯一的“关键”道具。”

Grunt.js,警告:无法写入“src”文件(错误代码:EISDIR)

内核在jupyter笔记本中不断死亡

解决 Logcat 警告消息

如何纠正流量警告:解构(缺少注释)

为啥我会收到 JDBC 驱动程序警告和 ThreadLocal 错误?