0

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!');} 
4

1 に答える 1

0

最後から 2 行目

$result = odbc_exec($sql);

「パラメーター数が間違っています」というエラーが発生しているものです。その 2 番目の呼び出しも関係ありません。

日付形式も気になりましたが、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.

...そして、行は実際にテーブルに挿入されました

phpTest

それでも、date('Y-m-d')より安全な選択になります。

于 2013-04-10T09:39:29.840 に答える