- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天,我尝试在 MySQL 中创建一个查询,该查询将更新所有在字符串中具有 id 的 invoice_numbers
。
UPDATE userhour SET invoice_number='{$invoice_number}'
WHERE id IN (" . $userhoursString . ")";
所有字段都存在,查询也有效,但是我不断收到此错误,但无法摆脱:
Database Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1' at line 1
Last Query content: 1
我的浏览器上的回显给了我:UPDATE userhour SET Invoice_number='2016030953500' WHERE id IN (24)
它在 phpmyadmin 中完美运行,所以我完全迷失了。
/////编辑/////
Field Type Null Key Default Extraid int(11) NO PRI NULL Auto_incrementproject_id int(11) NO NULL payment_id int(11) NO NULL userhour_category_id int(11) NO NULL minutes_spend int(11) NO NULLdescription text NO NULLactive int(11) NO NULLinvoice_number varchar NO 0date_created datetimeNO NULLdate_modified datetimeNO NULL
<?php
require_once("Classes/ini_classes.php");
$_SESSION["errors"] = "";
if (!isset($_SESSION['username'])) {
redirect_to('login.php');
} else {
require("Classes/phpMailer/PHPMailerAutoload.php");
error_reporting( 0 );
define('EURO',chr(128));
$customer_id = $Database->escape_value($_GET['customer']);
$project_id = $Database->escape_value($_GET['project']);
$vat_id = $_POST['vat'];
// retrieve all necessary database information.
$customer_result_set = $Database->fetchSingleArray($Database->customQuery("SELECT * FROM customer WHERE id='{$customer_id}'"));
$project_result_set = $Database->fetchSingleArray($Database->customQuery("SELECT * FROM project WHERE id='{$project_id}'"));
$vat_result_set = $Database->fetchSingleArray($Database->customQuery("SELECT * FROM vat WHERE id='{$vat_id}'"));
// get all customer info in variables
$insert_customer_name = $customer_result_set['customer_name'];
$insert_customer_streetname = $customer_result_set['streetname'];
$insert_customer_city = $customer_result_set['city'];
$insert_customer_zip_code = $customer_result_set['zip_code'];
$insert_customer_province = $customer_result_set['province'];
// get all necessary project info
$insert_project_name = $project_result_set['project_name'];
// calculate the price variables
$total_time = $_POST['time_so_far'];
$price_per_hour = $_POST['price_per_hour'];
$vat = $vat_result_set['percentage'];
$subTotal = ($price_per_hour / 60) * $total_time;
$grandTotal = (($subTotal * $vat) / 100) + $subTotal;
$grandTotalDisplay = number_format((float)$grandTotal, 2, '.', '');
$date_today = strtotime(date('Y-m-d'));
$deadline_date = strtotime('+30 day', $date_today);
$deadline_formatted = gmdate("m-d-Y", $deadline_date);
// rwewrite the array to a string and then get all userhours associated.
$userhoursToBill = $_POST['billed'];
$userhoursString = implode(', ', $userhoursToBill);
$userhour_result_set = $Database->fetchAllArray($Database->customQuery("SELECT * FROM userhour WHERE id IN ($userhoursString) AND invoice_number='0'"));
$invoice_number = date('Ymd') . $customer_id . $project_id . date('s');
// email to send to
$email_to_send_to = $Database->escape_value($_POST['email']);
}
// create the PDF
class PDF_receipt extends FPDF
{
function ___construct($orientation = 'P', $unit = 'pt', $format = 'A4', $margin = 40)
{
$this->FPDF($orientation, $unit, $format);
$this->SetTopMargin($margin);
$this->SetRightMargin($margin);
$this->SetLeftMargin($margin);
$this->SetAutoPageBreak(true, $margin);
}
function Header()
{
$this->SetFont('Arial', 'B', 20);
$this->SetFillColor(36, 96, 84);
$this->SetTextColor(225);
$image = "images/logo-for-invoice.jpg";
$this->Image($image);
}
function Footer()
{
$this->SetFont('Arial', '', 12);
$this->SetTextColor(0);
$this->Cell(0, 20, "Thank you for purchasing with us.", 'T', 0, 'C');
}
}
$pdf = new PDF_receipt();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
$pdf->Ln();
$pdf->SetY(30);
$pdf->SetFillColor(14);
$pdf->SetTextColor(225);
$pdf->SetFillColor(255);
$pdf->SetTextColor(0);
$pdf->SetY(45);
$pdf->SetFont('Arial', 'B', 12);
$pdf->Cell(190, 7, "Invoice for: " , 0, 1, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(135, 7, $insert_customer_name, 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, 'Reniax communication solutions', 0, 1, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(135, 7, $insert_customer_streetname, 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, 'Richterslaan 177', 0, 1, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(135, 7, $insert_customer_zip_code. ', ' . $insert_customer_city, 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, '3431 AJ, Nieuwgein', 0, 1, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(135, 7, $insert_customer_province, 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, 'Tel: 030-6300415', 0, 1, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Ln();
$pdf->SetFont('Arial', '', 18);
$pdf->SetTextColor('19', '141', '223');
$pdf->Cell(0,15, 'INVOICE', 0, 1, 'L');
$pdf->SetFont('Arial', '', 12);
$pdf->Cell(0, 1,'', 'B', 1, 'L', true);
$pdf->SetTextColor(0);
$pdf->SetFont('Arial', '', 12);
$pdf->Ln();
// border fix
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(0, 3,'', 0, 1, 'L', true);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(40, 7,'Invoice number: ', 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, $invoice_number, 0, 0, 'L', true);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(40, 7,'Payment terms:', 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7,'Payment within 30 days.', 0, 1, 'L', true);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(40, 7, 'Date: ' . date('M-d-Y'), 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, date('M-d-Y'), 0, 0, 'L', true);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(40, 7,'Bank account name: ' , 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7,'Rodney Wormsbecher', 0, 1, 'L', true);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(40, 7,'Payment due: ', 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(55, 7, $deadline_formatted, 0, 0, 'L', true);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(40, 7,'IBAN: ', 0, 0, 'L', true);
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(45, 7,'RABO NL00 1234 1234', 0, 1, 'L', true);
// border fix
$pdf->Cell(0, 3,'', 'B', 1, 'L', true);
$pdf->Ln();
$pdf->SetFont('Arial', 'B', 12);
$pdf->Ln(10);
$pdf->SetTextColor('19', '141', '223');
$pdf->Cell(110, 10, "Description", 1, 0, 'C', true);
$pdf->Cell(30, 10, "Date", 1, 0, 'C', true);
$pdf->Cell(25, 10, "Time", 1, 0, 'C', true);
$pdf->Cell(25, 10, "Price", 1, 1, 'C', true);
$pdf->SetTextColor(0);
$pdf->SetFillColor(243);
$pdf->Cell(110, 1, "", 'LRT', 0, 'C', true);
$pdf->Cell(30, 1, "", 'LRT', 0, 'C', true);
$pdf->Cell(25, 1, "", 'LRT', 0, 'C', true);
$pdf->Cell(25, 1, "", 'LRT', 1, 'C', true);
$pdf->SetFillColor(255);
// total width: 190
$pdf->SetFont('Arial', '', 10);
$counter = 0;
foreach ($userhour_result_set as $userhour) {
if (($counter % 2) == 0 ) {
$pdf->SetFillColor(243);
} else {
$pdf->SetFillColor(255);
}
$pdf->Cell(110, 8, ' ' . substr($userhour['description'], 0, 63), "LR", 0, 'L', true);
$pdf->Cell(30, 8, substr($userhour['date_created'], 0, 10), "LR", 0, 'C', true);
$pdf->Cell(25, 8, ' ' . calculateMinTohours($userhour['minutes_spend']), "LR", 0, 'L', true);
$pdf->Cell(25, 8, ' ' . EURO . number_format((float)( $price_per_hour / 60), 2, '.', '') * $userhour['minutes_spend'], "LR", 1, 'L', true);
$counter++;
}
$pdf->Cell(140, 8, '', 'T', 0, 'R', true);
$pdf->Cell(25, 8, ' ' . calculateMinTohours($total_time), 1, 0, 'L', true);
$pdf->Cell(25, 8, ' ' . EURO . number_format((float)$subTotal, 2, '.', ''), 1, 1, 'L', true);
$pdf->Cell(140, 8, '', 0, 0, 'R', true);
$pdf->Cell(25, 8, 'VAT: ', 'T', 0, 'R', true);
$pdf->Cell(25, 8, ' ' . $vat . "%", 1, 1, 'L', true);
$pdf->Cell(140, 8, '', 0, 0, 'R', true);
$pdf->Cell(25, 8, 'Total: ', 0, 0, 'R', true);
$pdf->Cell(25, 8, ' ' . EURO . number_format((float)$grandTotalDisplay, 2, '.', ''), 1, 1, 'L', true);
$pdf->Ln(10);
$pdf->Output('invoices/' . $invoice_number . '.pdf', 'F');
// send the PDF through mail.
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Mailer = "SMTP";
$mail->Host = "smtp-mail.outlook.com";
$mail->Port = "587"; // 8025, 587 and 25 can also be used. Use Port 465 for SSL.
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'TLS';
$mail->Username = "rodney22@live.nl";
$mail->Password = "rodney2802";
$mail->From = "rodney22@live.com";
$mail->FromName = "Rodney Wormsbecher";
$mail->AddAddress($email_to_send_to);
$mail->AddReplyTo("rodney22@live.nl", "Rodney Wormsbecher");
$mail->Subject = "Invoice #" . $invoice_number . " - customer: " . $insert_customer_name . " project: " . $insert_project_name;
$mail->Body = "The invoice for " . $insert_customer_name . " project: " . $insert_project_name;
$mail->AddAttachment('invoices/' . $invoice_number . '.pdf', 'invoice for: ' . $invoice_number);
$mail->WordWrap = 50;
if(!$mail->Send()) {
$_SESSION['flash_message'] = 'Mailer error: ' . $mail->ErrorInfo;
exit;
}
// get all userhours and update their invoice numbers
$sql = "UPDATE userhour SET invoice_number='{$invoice_number}' WHERE id IN (" . $userhoursString . ")";
echo $sql;
$update = $Database->customQuery($Database->customQuery($sql));
// when finished redirect.
$log_message = "[" . date("Y-m-d H:i:s") . "] [ INVOICE CREATE ] " . $invoice_number . " has been created. by " . ucfirst($_SESSION['username']);
WriteToLog($log_message, 0);
$_SESSION['flash_message'] = $invoice_number . " has been created.";
// redirect_to("customer_view.php?project=$project_id&customer=$customer_id");
?>
有人知道我做错了什么吗?非常感谢任何帮助
最佳答案
错误在这一行:
$update = $Database->customQuery($Database->customQuery($sql));
你现在可以自己发现它了,不是吗?
有两次对 $Database->customQuery()
的调用。内部调用运行查询并可能返回1
(或TRUE
)。外部调用尝试将字符串 '1'
作为 SQL 查询运行,因此出现错误消息。
将其更改为:
$update = $Database->customQuery($sql);
关于使用 IN() 子句的 PHP/MYSQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35886036/
我查看了网站上的一些问题,但还没有完全弄清楚我做错了什么。我有一些这样的代码: var mongoose = require('mongoose'), db = mongoose.connect('m
基本上,根据 this bl.ocks,我试图在开始新序列之前让所有 block 都变为 0。我认为我需要的是以下顺序: 更新为0 退出到0 更新随机数 输入新号码 我尝试通过添加以下代码块来遵循上述
我试图通过使用随机数在循环中设置 JSlider 位置来模拟“赛马”的投注结果。我的问题是,当然,我无法在线程执行时更新 GUI,因此我的 JSlider 似乎没有在竞赛,它们从头到尾都在运行。我尝试
该功能非常简单: 变量:$table是正在更新的表$fields 是表中的字段,$values 从帖子生成并放入 $values 数组中而$where是表的索引字段的id值$indxfldnm 是索引
让我们想象一个环境:有一个数据库客户端和一个数据库服务器。数据库客户端可以是 Java 程序或其他程序等;数据库服务器可以是mysql、oracle等。 需求是在数据库服务器上的一个表中插入大量记录。
在我当前的应用程序中,我正在制作一个菜单结构,它可以递归地创建自己的子菜单。然而,由于这个原因,我发现很难也允许某种重新排序方法。大多数应用程序可能只是通过“排序”列进行排序,但是在这种情况下,尽管这
Provisioning Profile 有 key , key 链依赖于它。我想知道 key 什么时候会改变。 Key will change after renew Provisioning Pr
截至目前,我在\server\publications.js 中有我的 MongoDB“选择”,例如: Meteor.publish("jobLocations", function () { r
我读到 UI 应该始终在主线程上更新。但是,当谈到实现这些更新的首选方法时,我有点困惑。 我有各种函数可以执行一些条件检查,然后使用结果来确定如何更新 UI。我的问题是整个函数应该在主线程上运行吗?应
我在代理后面,我无法构建 Docker 镜像。 我试过 FROM ubuntu , FROM centos和 FROM alpine ,但是 apt-get update/yum update/apk
我构建了一个 Java 应用程序,它向外部授权客户端公开网络服务。 Web 服务使用带有证书身份验证的 WS-security。基本上我们充当自定义证书颁发机构 - 我们在我们的服务器上维护一个 ja
因此,我有时会在上传新版本时使用 app_offline.htm 使应用程序离线。 但是,当我上传较大的 dll 时,我收到黄色错误屏幕,指出无法加载 dll。 这似乎与我对 app_offline.
我刚刚下载了 VS Apache Cordova Tools Update 5,但遇到了 Node 和 NPM 的问题。我使用默认的空白 cordova 项目进行测试。 版本 如果我在 VS 项目中对
所以我有一个使用传单库实例化的 map 对象。 map 实例在单独的模板中创建并以这种方式路由:- var app = angular.module('myApp', ['ui', 'ngResour
我使用较早的 Java 6 u 3 获得的帧速率是新版本的两倍。很奇怪。谁能解释一下? 在 Core 2 Duo 1.83ghz 上,集成视频(仅使用一个内核)- 1500(较旧的 java)与 70
我正在使用 angular 1.2 ng-repeat 创建的 div 也包含 ng-click 点击时 ng-click 更新 $scope $scope 中的变化反射(reflect)在使用 $a
这些方法有什么区别 public final void moveCamera(CameraUpdate更新)和public final void animateCamera (CameraUpdate
我尝试了另一篇文章中某人评论中关于如何将树更改为列表的建议。但是,我在某处(或某物)有未声明的变量,所以我列表中的值是 [_G667, _G673, _G679],而不是 [5, 2, 6],这是正确
实现以下场景的最佳方法是什么? 我需要从java应用程序调用/查询包含数百万条记录的数据库表。然后,对于表中的每条记录,我的应用程序应该调用第三方 API 并获取状态字段作为响应。然后我的应用程序应该
只是在编写一些与 java 图形相关的代码,这是我今天的讲座中的非常简单的示例。不管怎样,互联网似乎说更新不会被系统触发器调用,例如调整框架大小等。在这个例子中,更新是由这样的触发器调用的(因此当我只
我是一名优秀的程序员,十分优秀!