Php Can';我不明白为什么我总是遇到Mysql错误

Php Can';我不明白为什么我总是遇到Mysql错误,php,mysql,sql,Php,Mysql,Sql,每次我试图更新MySQL中的记录时都会遇到这个错误,昨天我在这里的另一篇文章中测试了我表单的一个较小版本 我知道在MySQL中更新记录的代码是有效的,但当我尝试以实际形式使用它时,我需要使用它,我不断得到以下错误: 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“票证”附近设置“已执行的工作”“测试”“项目数量1”“1”“在 第1行 以下是我处理更新的代码: <?php // database connection // includ

每次我试图更新MySQL中的记录时都会遇到这个错误,昨天我在这里的另一篇文章中测试了我表单的一个较小版本

我知道在MySQL中更新记录的代码是有效的,但当我尝试以实际形式使用它时,我需要使用它,我不断得到以下错误:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“票证”附近设置“已执行的工作”“测试”“项目数量1”“1”“在 第1行

以下是我处理更新的代码:

    <?php
// database connection //

include 'db_connect.php';

//This gets all the other information from the form

// start of form inputs //

$work_performed=$_POST['work_performed'];
$item_qty1=$_POST['item_qty1'];
$item_qty2=($_POST['item_qty2']);
$item_qty3=$_POST['item_qty3'];
$item_qty4=($_POST['item_qty4']);
$item_qty5=$_POST['item_qty5'];
$manuf_1=$_POST['manuf_1'];
$manuf_2=$_POST['manuf_2'];
$manuf_3=$_POST['manuf_3'];
$manuf_4=$_POST['manuf_4'];
$manuf_5=$_POST['manuf_5'];
$part_number1=$_POST['part_number1'];
$part_number2=$_POST['part_number2'];
$part_number3=$_POST['part_number3'];
$part_number4=$_POST['part_number4'];
$part_number5=$_POST['part_number5'];
$part_description1=$_POST['part_description1'];
$part_description2=$_POST['part_description2'];
$part_description3=$_POST['part_description3'];
$part_description4=$_POST['part_description4'];
$part_description5=$_POST['part_description5'];
$part_price1=$_POST['part_price1'];
$part_price2=$_POST['part_price2'];
$part_price3=$_POST['part_price3'];
$part_price4=$_POST['part_price4'];
$part_price5=$_POST['part_price5'];
$price_extension1=$_POST['price_extension1'];
$price_extension2=$_POST['price_extension2'];
$price_extension3=$_POST['price_extension3'];
$price_extension4=$_POST['price_extension4'];
$price_extension5=$_POST['price_extension5'];
$material_total=$_POST['material_total'];
$sales_tax=$_POST['sales_tax'];
$shipping_cost=$_POST['shipping_cost'];
$work_date1=$_POST['work_date1'];
$work_date2=$_POST['work_date2'];
$work_date3=$_POST['work_date3'];
$work_date4=$_POST['work_date4'];
$work_date5=$_POST['work_date5'];
$tech_name1=$_POST['tech_name1'];
$tech_name2=$_POST['tech_name2'];
$tech_name3=$_POST['tech_name3'];
$tech_name4=$_POST['tech_name4'];
$tech_name5=$_POST['tech_name5'];
$cost_code1=$_POST['cost_code1'];
$cost_code2=$_POST['cost_code2'];
$cost_code3=$_POST['cost_code3'];
$cost_code4=$_POST['cost_code4'];
$cost_code5=$_POST['cost_code5'];
$pay_rate1=$_POST['pay_rate1'];
$pay_rate2=$_POST['pay_rate2'];
$pay_rate3=$_POST['pay_rate3'];
$pay_rate4=$_POST['pay_rate4'];
$pay_rate5=$_POST['pay_rate5'];
$total_hours1=$_POST['total_hours1'];
$total_hours2=$_POST['total_hours2'];
$total_hours3=$_POST['total_hours3'];
$total_hours4=$_POST['total_hours4'];
$total_hours5=$_POST['total_hours5'];
$hours_subtotal1=$_POST['hours_subtotal1'];
$hours_subtotal2=$_POST['hours_subtotal2'];
$hours_subtotal3=$_POST['hours_subtotal3'];
$hours_subtotal4=$_POST['hours_subtotal4'];
$hours_subtotal5=$_POST['hours_subtotal5'];
$total_hours=$_POST['total_hours'];
$material_total=$_POST['material_total'];
$labor_cost=$_POST['labor_cost'];
$grand_total=$_POST['grand_total'];
$id=$_POST['id'];

//below section is not ready //
//$employee_number=$_POST['employee_number'];
//$date_finished=$_POST['date_finished'];
//$tech_signature=$_POST['tech_signature'];
//$customer_signature=$_POST['customer_signature'];
//$print_name=$_POST['print_name'];


//Writes the information to the database

    mysql_query("UPDATE 'tickets' SET   'work_performed' = '$work_performed',
                                        'item_qty1' = '$item_qty1',
                                        'item_qty2' = '$item_qty2',
                                        'item_qty3' = '$item_qty3',
                                        'item_qty4' = '$item_qty4',
                                        'item_qty5' = '$item_qty5',
                                        'manuf_1' = '$manuf_1', 
                                        'manuf_2' = '$manuf_2',  
                                        'manuf_3' = '$manuf_3', 
                                        'manuf_4' = '$manuf_4',
                                        'manuf_5' = '$manuf_5',
                                        'part_number1' = '$part_number1',
                                        'part_number2' = '$part_number2',
                                        'part_number3' = '$part_number3',
                                        'part_number4' = '$part_number4',
                                        'part_number5' = '$part_number5',
                                        'part_description1' = '$part_description1', 
                                        'part_description2' = '$part_description2', 
                                        'part_description3' = '$part_description3', 
                                        'part_description4' = '$part_description4',
                                        'part_description5' = '$part_description5', 
                                        'part_price1' = '$part_price1', 
                                        'part_price2' = '$part_price2', 
                                        'part_price3' = '$part_price3', 
                                        'part_price4' = '$part_price4', 
                                        'part_price5' = '$part_price5',
                                        'price_extension1' = '$price_extension1', 
                                        'price_extension2' = '$price_extension2', 
                                        'price_extension3' = '$price_extension3', 
                                        'price_extension4' = '$price_extension4', 
                                        'price_extension5' = '$price_extension5', 
                                        'material_total' = '$material_total', 
                                        'sales_tax' = '$sales_tax', 
                                        'shipping_cost' = '$shipping_cost', 
                                        'work_date1' = '$work_date1',
                                        'work_date2' = '$work_date2',   
                                        'work_date3' = '$work_date3', 
                                        'work_date4' = '$work_date4', 
                                        'work_date5' = '$work_date5', 
                                        'tech_name1' = '$tech_name1', 
                                        'tech_name2' = '$tech_name2', 
                                        'tech_name3' = '$tech_name3', 
                                        'tech_name4' = '$tech_name4', 
                                        'tech_name5' = '$tech_name5', 
                                        'cost_code1' = '$cost_code1', 
                                        'cost_code2' = '$cost_code2', 
                                        'cost_code3' = '$cost_code3', 
                                        'cost_code4' = '$cost_code4', 
                                        'cost_code5' = '$cost_code5', 
                                        'pay_rate1' = '$pay_rate1', 
                                        'pay_rate2' = '$pay_rate2', 
                                        'pay_rate3' = '$pay_rate3', 
                                        'pay_rate4' = '$pay_rate4',
                                        'pay_rate5' = '$pay_rate5', 
                                        'total_hours1' = '$total_hours1', 
                                        'total_hours2' = '$total_hours2', 
                                        'total_hours3' = '$total_hours3', 
                                        'total_hours4' = '$total_hours4', 
                                        'total_hours5' = '$total_hours5', 
                                        'hours_subtotal1' = '$hours_subtotal1', 
                                        'hours_subtotal2' = '$hours_subtotal2', 
                                        'hours_subtotal3' = '$hours_subtotal3', 
                                        'hours_subtotal4' = '$hours_subtotal4', 
                                        'hours_subtotal5' = '$hours_subtotal5', 
                                        'total_hours' = '$total_hours', 
                                        'material_total' = '$material_total', 
                                        'labor_cost' = '$labor_cost', 
                                        'grand_total' = '$grand_total'  WHERE 'id' = '$id'"); 




mysql_affected_rows();

echo mysql_error();

?>
<html>
<body>
<center>
<br><br><br>
<form name="results" method="post" action="ticket_results.php" enctype="multipart/form-data" id="ticketresult">
<input type="submit" class="submit" id="ticketresult" style="width: 165px" value="Do Something">
</form>
</center>
</body>
</html>

每次都可以完美地工作,但只要我添加一个值,比如item_qty2或part_number2等,我就会得到语法错误。整个表单工作了1次,但要求我在每个字段中输入一个值,但我并不总是在每个字段中都需要一个值

查询不起作用的原因是您正在用单引号包装列名和表名。它们是标识符,而不是字符串文字,因此它们不应该用单引号括起来

UPDATE tickets SET work_performed = .....
如果使用的列名和/或表名恰好是保留关键字,则可以使用反勾号而不是单引号对其进行转义。前,

UPDATE `tickets` SET `work_performed` = .....
在这种情况下,不需要反勾号,因为它们都不是保留关键字

其他链接:


作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号


查询不起作用的原因是您正在用单引号将列名和表名括起来。它们是标识符,而不是字符串文字,因此它们不应该用单引号括起来

UPDATE tickets SET work_performed = .....
如果使用的列名和/或表名恰好是保留关键字,则可以使用反勾号而不是单引号对其进行转义。前,

UPDATE `tickets` SET `work_performed` = .....
在这种情况下,不需要反勾号,因为它们都不是保留关键字

其他链接:


作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号


如果您输入的任何一个值都有撇号,它将打断您的查询,因为您没有转义它


此外,列名应该用反勾号括起来,而不是单引号。

如果输入的任何一个值都有撇号,它将打断您的查询,因为您没有转义它


此外,列名应该用反勾号括起来,而不是单引号。

谢谢JW的帮助,至少有人留下来了!JW由于某种原因,它工作了1次,然后停止了,所以我玩了代码,并发布了新的实验代码,该代码似乎工作完美,但我不得不删除代码的3/4。@Jason“你更新了”问题似乎与最初的问题不同。你应该打开另一个。不管怎样,你能把查询放在一个变量中并回显这个变量吗?我想问题在于我如何更新记录,它需要我输入所有的值,如果我没有,它会给我一个语法错误,我并不总是需要填写所有的值,所以我需要找到一种方法来使用表单中的所有值,但只更新那些添加了值的值。我会问一个新问题,谢谢你的帮助,非常感谢。无论如何,试试这个,在
POST
部分,
$work\u performed=(isset($\u POST['work\u performed'])?$\u POST['work\u performed']:'NULL')
在你的查询中,
work\u performed=COALESCE($work\u performed,work\u performed)
感谢JW的帮助,至少有人继续关注这个话题!JW由于某种原因,它工作了1次,然后停止了,所以我玩了代码,并发布了新的实验代码,该代码似乎工作完美,但我不得不删除代码的3/4。@Jason“你更新了”问题似乎与最初的问题不同。你应该打开另一个。不管怎样,你能把查询放在一个变量中并回显这个变量吗?我想问题在于我如何更新记录,它需要我输入所有的值,如果我没有,它会给我一个语法错误,我并不总是需要填写所有的值,所以我需要找到一种方法来使用表单中的所有值,但只更新那些添加了值的值。我会问一个新问题谢谢你的帮助,非常感谢。无论如何,试试这个,在
POST
部分,
$work\u performed=(isset($\u POST['work\u performed'])?$\u POST['work\u performed']:'NULL')
在你的查询中,
work\u performed=COALESCE($work\u performed,work\u performed)
谢谢你的回复,我删除了所有撇号,现在表单工作正常。感谢您的回复,我删除了所有撇号,现在表单工作正常。