我的代码需要一些帮助。我收到这个错误:
PHP警告:SQLite3 :: query():无法准备语句:1,
=
附近:第16行/var/www/html/image.php
语法错误PHP致命错误:未捕获错误:在/var/www/html/image.php中调用布尔成员函数fetchArray():17`
堆栈追踪:
0 {main}
在第17行的/var/www/html/image.php中抛出
这是我的代码:
<?php
error_reporting(E_ALL ^ E_NOTICE);
Header("Content-type: image/png");
$im = imagecreate(304, 214);
$blanco = imagecolorallocate($im, 255, 255, 255);
imagerectangle($im, 0, 0, 304, 214, $blanco);
$rojo = imagecolorallocate($im, 255, 0, 0);
$verde = imagecolorallocate($im, 0, 255, 0);
$azul = imagecolorallocate($im, 0, 0, 255);
$amarillo = imagecolorallocate($im, 255, 255, 0);
$violeta = imagecolorallocate($im, 46, 49, 146);
$naranja = imagecolorallocate($im, 242, 101, 34);
$negro = imagecolorallocate($im, 0, 0, 0);
if ($db = new SQLite3 ('/var/www/html/db/SeriesDb.sqlite')) {
$q = $db-> query("SELECT * FROM tbl_Series where id "= .$_REQUEST["id"]);
while ($row = $q-> fetchArray()) {
$id = $row[0];
$dayweek = date("N", strtotime($row[1]));
$serie = explode(" ",$row[2]);
}
} else {
die("error");
}
switch ($dayweek) {
case 7: $color = $rojo;
break;
case 6: $color = $naranja;
break;
case 5: $color = $amarillo;
break;
case 4: $color = $verde;
break;
case 3: $color = $azul;
break;
case 2: $color = $violeta;
break;
case 1: $color = $negro;
}
$j = 0;
$y = 0;
$x = 0;
for ($i = 0; $i < 70; $i++) {
$j++;
if ($j > 10)
$j = 1;
$x = 30 * $j - 28;
$y = $i % 10 == 0 ? 2 + ($i / 10) * 30 : $y;
imagerectangle($im, $x, $y, $x + 30, $y + 30, $negro);
if (in_array($i + 1, $serie))
imagefilledrectangle($im, $x + 1, $y + 1, $x + 30 - 1, $y + 30 - 1, $color);
}
Imagepng($im);
Imagedestroy($im);
$db->close();
问题是什么?
答案 0 :(得分:1)
:help gui-colors
符号似乎位于您要连接'\%1l^.\{,50}'
的字符串文字之外。它应该是这样的:
=
但是,最好避免连接并使用预先准备好的声明:
$_REQUEST["id"]
答案 1 :(得分:0)
看起来您的查询无法正常生成。建议使用prepare语句将运行时参数添加到查询中。你可以使用this教程。