我正在尝试使用PHP中的内爆数组更新MySQL表,但我无法实现目标。
这是我的代码
retrive.php
<?php
$con=mysqli_connect("localhost","root","root","helixdemo");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id=1;
$result = mysqli_query($con,"SELECT * FROM employee
WHERE id='1'");
$focus = array();
while($row = mysqli_fetch_array($result)) {
$focus=explode(",",$row['name']);
?>
<?php
}
mysqli_close($con);
?>
<html>
<body>
<form action="update1.php" method="post">
<input type="text" name="name" value="shakti">
<input type="text" name="name" value="shakti">
<input type="checkbox" name="cbox[]" value="Item 1" <?php if(in_array("Item 1",$focus)) { ?> checked="checked" <?php } ?>/>Item 1
<input type="checkbox" name="cbox[]" value="Item 2" <?php if(in_array("Item 2",$focus)) { ?> checked="checked" <?php } ?>/>Item 2
<input type="checkbox" name="cbox[]" value="Item 3" <?php if(in_array("Item 3",$focus)) { ?> checked="checked" <?php } ?> />Item 3
<input type="checkbox" name="cbox[]" value="Item 4" />Item 4
<input type="checkbox" name="cbox[]" value="Item 5" />Item 5
<input type="submit">
</form>
</body>
<html>
update.php
<?php
$con=mysqli_connect("localhost","root","root","HelixDemo");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$items = implode(",",$_REQUEST['cbox']);
$sql = ('UPDATE employee
SET name = '.$items.'
WHERE id;');
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo " record added";
mysqli_close($con);
?>
我收到以下错误
错误:您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近&#39; 1,项目2在哪里?&#39;在第2行
如何解决我的问题?
答案 0 :(得分:1)
你的第一个问题是引用。您需要引号,因为name
是VARCHAR
。
您的第二个问题是您要更新的行的ID,您也应该发送它(使用隐藏的输入)并将其存储在变量$id
中。
代码应该是:
$sql = ('UPDATE employee
SET name = \''.$items.'\'
WHERE id = '.$id.' ;');
答案 1 :(得分:1)
您的更新声明错误
$sql = ('UPDATE employee SET name = '.$items.' WHERE id;');
应该是:
$sql = "UPDATE employee SET name = '".$items."' WHERE id=1";
请注意单引号和双引号以及赋值给id。