SQLデータベースにレコードを挿入するためにAzureでPHPウェブジョブを実行しようとしたところ、私のコードは$query->execute();
行を破り続けていました。Azure:PHP SQL Webjobが機能しません。なぜそれはクエリ "execute()"文にスローされますか?
ここに私がしたことがあります。最初に私は私のSQLデータベースに行き、master
デシベルの下でログインを作成:
CREATE LOGIN username WITH password='userpassword'
その後、私は(ないmaster
の下で、しかしmydb
下)私の現在のデータベース内のユーザーとして、このログインを追加しました:
CREATE USER username FROM LOGIN username
は、その後、私は、このコマンドを使用してこのユーザーの書き込み権限を与えた:
EXEC sp_addrolemember N'db_datawriter', N'username'
はすべてこれを行ったので、私はその後portal.azureに入った、と開かれた私AppJobsにナビゲートし、.zip
ファイルを2つのファイルでアップロードしました。
スケジューラ、settings.job
:
{
"schedule": "0 */5 * * * *"
}
そして、私のメインのPHPコード、updateRecord.php
:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
try {
$conn = new PDO ("sqlsrv:server = myazuresite.database.windows.net,1433; Database = mydb", "username", "userpassword");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
print("Error connecting to SQL Server.");
}
$cm = 'cm';
$span = '1day';
$stf = $conn->prepare("INSERT INTO mydbtable
VALUES ($cm, $span, 1, 2, 3, 4, 12.34);");
$stf->execute();
echo $stf;
unset($conn);
unset($stmt);
?>
私はWebJobを立ち上げたとして、それはPending restart
にRunning
状態から行ってきました。
[09/10/2016 21:03:14 > 82e662: SYS INFO] Detected WebJob file/s were updated, refreshing WebJob
[09/10/2016 21:03:14 > 82e662: SYS INFO] Status changed to Starting
[09/10/2016 21:03:14 > 82e662: SYS INFO] Run script 'updateRecord.php' with script host - 'PhpScriptHost'
[09/10/2016 21:03:14 > 82e662: SYS INFO] Status changed to Running
[09/10/2016 21:03:15 > 82e662: INFO]
[09/10/2016 21:03:15 > 82e662: INFO] Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'day'.' in D:\local\Temp\jobs\continuous\myjobname\uf5ls33g.42d\myjobzipfolder\updateRecord.php:20
[09/10/2016 21:03:15 > 82e662: INFO] Stack trace:
[09/10/2016 21:03:15 > 82e662: INFO] #0 D:\local\Temp\jobs\continuous\gAnaytics\uf5ls33g.42d\myjobzipfolder\updateRecord.php(20): PDOStatement->execute()
[09/10/2016 21:03:15 > 82e662: INFO] #1 {main}
[09/10/2016 21:03:15 > 82e662: INFO] thrown in D:\local\Temp\jobs\continuous\jobs\uf5ls33g.42d\myjobzipfolder\updateRecord.php on line 20
[09/10/2016 21:03:15 > 82e662: SYS ERR ] Job failed due to exit code 255
[09/10/2016 21:03:15 > 82e662: SYS INFO] Process went down, waiting for 60 seconds
[09/10/2016 21:03:15 > 82e662: SYS INFO] Status changed to PendingRestart
全体WebJobログの最も関連性の高い、最もに関するビーイング:
[09/10/2016 21:03:15 > 82e662: INFO] Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'day'.' in D:\local\Temp\jobs\continuous\myjobname\uf5ls33g.42d\myjobzipfolder\updateRecord.php:20
誰もがこの問題を解決するためにどのように診断することはできますか?私はSQL文をどのように準備するか、それを実行する方法に何か間違っているとは思わない。