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