【问题标题】:Insert record using php and access database - getting "Wrong parameter count for odbc_exec()"使用 php 插入记录并访问数据库 - 获取“odbc_exec() 的参数计数错误”
【发布时间】:2013-04-10 03:01:58
【问题描述】:

使用 php 插入记录并访问数据库 - 获取“odbc_exec() 的参数计数错误”一切正常,但我无法将其插入数据库。

$R1=rand(1,20);
$db=odbc_connect('Eightball','','');
 $sql  = "SELECT * FROM theAnswers";
 $sql .= " WHERE id = " . $R1;
 $rs=odbc_exec($db,$sql);
while (odbc_fetch_row($rs))
{       
 $FinalAnswer=odbc_result($rs,"Answer");
 $newdate = date('M j, Y');
 $newQuestion = $_POST["Question"];
 if(isset($_SERVER['HTTP_REFERER'])) {
 $Thereferrer=$_SERVER['HTTP_REFERER'];
 }
$theIPAddress=$_SERVER['REMOTE_ADDR'];

 echo $theIPAddress;
 echo $Thereferrer;
 echo $newQuestion;
 echo $FinalAnswer;
 echo $newdate;
}


$sql = "INSERT INTO theQuestions (ipaddress, referrer, Question, Answer, theDate)     VALUES ('$theIPAddress', '$Thereferrer', '$newQuestion', '$FinalAnswer', newdate)";
$rs=odbc_exec($db,$sql);
$result = odbc_exec($sql);
if (!$result) {exit('Execution failed!');} 

【问题讨论】:

  • 您不需要在 INSERT 语句中的 newdate 变量上加上 $ 吗?
  • 我确信插入语句的日期字段有问题。在访问中,它被设置为日期/时间数据类型
  • 试过 $newdate, '$newdate'
  • 参见:delphi.about.com/od/delphitips2007/qt/datetime_sql.htm 这是 Delphi 的,但 PHP 也是如此
  • 我删除了 ipaddress、referrer 和它们的值并运行了查询,但没有更新,因为数据类型设置为“允许零长度不”

标签: php ms-access sql-insert


【解决方案1】:

倒数第二行

$result = odbc_exec($sql);

是给出“错误参数计数”错误的那个。第二个调用也是无关的。

我也担心日期格式,但我在我的 Windows 服务器上尝试过,以下对我有用

<?php
$db = odbc_connect('db1', '', '');
$dateValue = date('M j, Y');
$sql = 
        "INSERT INTO phpTest (TextCol, DateCol) " .
        "VALUES ('testing', '" . $dateValue . "')";
echo $sql . "\r\n";
odbc_exec($db, $sql);
echo "Done.\r\n";

试运行成功...

C:\__tmp>\php\php odbcTest.php
INSERT INTO phpTest (TextCol, DateCol) VALUES ('testing', 'Apr 10, 2013')
Done.

...该行确实已插入到表中

不过,date('Y-m-d') 会是更安全的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多