UPDATE table语句中的PHP语法错误
我试图用sourcelocationtable(LocationID)、imagetable(ImageID)、itemtypetable(ItemTypeID)和donatortable(DonatorID)中的外键值更新名为mineraltable的表(主键名为ItemID) 我希望用户能够从下拉选择框中选择位置、图像、项目类型和捐赠者值。该值将存储在变量中,然后使用下拉选择框中显示的值的外键号更新该表 后4个表与mineral表的关系是1-Many,因此我不能使用连接表来保存它们必须放在mineral表中的外键 在尝试运行以下sql代码之后UPDATE table语句中的PHP语法错误,php,mysql,database,syntax-error,Php,Mysql,Database,Syntax Error,我试图用sourcelocationtable(LocationID)、imagetable(ImageID)、itemtypetable(ItemTypeID)和donatortable(DonatorID)中的外键值更新名为mineraltable的表(主键名为ItemID) 我希望用户能够从下拉选择框中选择位置、图像、项目类型和捐赠者值。该值将存储在变量中,然后使用下拉选择框中显示的值的外键号更新该表 后4个表与mineral表的关系是1-Many,因此我不能使用连接表来保存它们必须放在m
UPDATE mineraltable SET LocationID='160',ItemTypeID='1',ImageID='6', DonatorID='4' WHERE ItemID='372'
它被转换成PHP格式,用我的PHP变量代替数值
$sql = "UPDATE mineraltable\n"
. "SET LocationID=\'$LocationID\', ItemTypeID=\'$ItemTypeID\', ImageID=\'$ImageID\', DonatorID=\'$DonatorID\'\n"
. "WHERE ItemID=\'ItemID\'"
我发现使用数值写入本地服务器xampp的sql代码运行成功,并更新了表中的外键值,但当我在web浏览器中运行此代码的php版本时,出现错误:
“您的SQL语法有错误;请检查以下手册:
对应于要使用的正确语法的MariaDB服务器版本
在“\'166\”附近,ItemTypeID=\'6\”,ImageID=\'11\,DonatorID=\'4\,其中
第2行的ItemID=\'371\'”
我在StackOverFlow上查看了更新外键的另一种方法,我发现您可以临时删除外键以执行代码,然后重新应用外键。但不建议这样做
我已经对代码进行了多次检查,没有发现任何错误。有人能告诉我,因为我是php编码新手,语法错误是由哪里造成的吗?非常感谢任何有建设性的回答。
我已经按照答案获取了更新语句代码。但是也查看了
[1] :解决问题,但后一链接中的示例与我的示例不同
下面是整个输入表单的php代码。
$debugMode = true;
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'rockandmineraldb';
$conn = mysql_connect($dbhost, $dbuser, $dbpass,$dbname);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
$sql = 'SELECT LocationID,Site,Region,Country,Continent FROM sourcelocationtable';
mysql_select_db('rockandmineraldb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
$SiteOptionData="";
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
$LocationID = $row['LocationID'];
$Site = $row['Site'];
$Region = $row['Region'];
$Country = $row['Country'];
$Continent = $row['Continent'];
$SiteOptionData .= "<option value-\"$LocationID\">$Site $Region $Country $Continent</option>";
}
$sql = 'SELECT DonatorID,DonatorFN,DonatorLN FROM donatortable';
mysql_select_db('rockandmineraldb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
$DonatorOptionData="";
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
$DonatorID = $row['DonatorID'];
$DonatorFN = $row['DonatorFN'];
$DonatorLN = $row['DonatorLN'];
$DonatorOptionData .= "<option value-\"$DonatorID\">$DonatorFN $DonatorLN</option>";
}
$sql = 'SELECT ItemTypeID,ItemType FROM itemtypetable';
mysql_select_db('rockandmineraldb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
$ItemTypeOptionData="";
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
$ItemTypeID = $row['ItemTypeID'];
$ItemType = $row['ItemType'];
$ItemTypeOptionData .= "<option value-\"$ItemTypeID\">$ItemType</option>";
}
$sql = 'SELECT ImageID,Image FROM imagetable';
mysql_select_db('rockandmineraldb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
$ImageOptionData="";
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
$ImageID = $row['ImageID'];
$Image = $row['Image'];
$ImageOptionData .= "<option value-\"$ImageID\">$Image</option>";
}
$sql = 'SELECT ItemID,TrayBoxNo,ItemInBox,Name FROM mineraltable';
mysql_select_db('rockandmineraldb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
$ItemOptionData="";
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
$ItemID = $row['ItemID'];
$TrayBoxNo = $row['TrayBoxNo'];
$ItemInBox = $row['ItemInBox'];
$Name = $row['Name'];
$ItemOptionData .= "<option value-\"$ItemID\">$TrayBoxNo,$ItemInBox,$Name</option>";
}
mysql_free_result($retval);
echo "Fetched data successfully\n";
if(isset($_POST['Item'])){ $ItemID== $_POST['Item']; }
if(isset($_POST['Location'])){ $LocationID = $_POST['Location']; }
if(isset($_POST['ItemType'])){ $ItemTypeID = $_POST['ItemType']; }
if(isset($_POST['Image'])){ $ImageID = $_POST['Image']; }
if(isset($_POST['Donator'])){ $DonatorID = $_POST['Donator']; }
if(isset)
$sql = "UPDATE mineraltable\n"
. "SET LocationID=\'$LocationID\', ItemTypeID=\'$ItemTypeID\', ImageID=\'$ImageID\', DonatorID=\'$DonatorID\'\n"
. "WHERE ItemID=\'$ItemID\'";
mysql_select_db('rockandmineraldb');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";
mysql_close($conn);
?>
<form method = "post" action = "<?php $_PHP_SELF ?>">
<table>
<tr>
<td>Select Site</td>
<td>
<select size="10" name="Location" multiple="multiple" id="Location">
<?php echo $SiteOptionData; ?>
</select>
</td>
</tr>
<br>
<tr>
<td>Select Donator</td>
<td>
<select size="10" name="Donator" multiple="multiple" id="Donator">
<?php echo $DonatorOptionData; ?>
</select>
</td>
</tr>
<br>
<tr>
<td>Select ItemType</td>
<td>
<select size="10" name="ItemType" multiple="multiple" id="ItemType">
<?php echo $ItemTypeOptionData; ?>
</select>
</td>
</tr>
<br>
<tr>
<td>Select Image</td>
<td>
<select size="10" name="Image" multiple="multiple" id="Image">
<?php echo $ImageOptionData; ?>
</select>
</td>
</tr>
<tr>
<td>Select Item</td>
<td>
<select size="10" name="Item" multiple="multiple" id="Item">
<?php echo $ItemOptionData; ?>
</select>
</td>
</tr>
</table>
<input name="update" type="submit" id="update" value="update">
</form>
$debugMode=true;
$dbhost='localhost';
$dbuser='root';
$dbpass='';
$dbname='rockandmineraldb';
$conn=mysql\u connect($dbhost、$dbuser、$dbpass、$dbname);
如果(!$conn){
die('无法连接:'.mysql_error());
}
echo“连接成功”;
$sql='从sourcelocationtable中选择LocationID、站点、地区、国家/地区、大陆';
mysql_select_db(“rockandmineraldb”);
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die('无法获取数据:'.mysql_error());
}
$SiteOptionData=“”;
而($row=mysql\u fetch\u数组($retval,mysql\u ASSOC)){
$LocationID=$row['LocationID'];
$Site=$row['Site'];
$Region=$row['Region'];
$Country=$row['Country'];
$Continental=$row['Continental'];
$SiteOptionData.=“$Site$地区$Country$大陆”;
}
$sql='从donatortable中选择DonatorID、DonatorFN、DonatorLN';
mysql_select_db(“rockandmineraldb”);
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die('无法获取数据:'.mysql_error());
}
$DonatorOptionData=“”;
而($row=mysql\u fetch\u数组($retval,mysql\u ASSOC)){
$DonatorID=$row['DonatorID'];
$DonatorFN=$row['DonatorFN'];
$DonatorLN=$row['DonatorLN'];
$DonatorOptionData.=“$DonatorFN$DonatorLN”;
}
$sql='从itemtypetable中选择ItemTypeID、ItemType';
mysql_select_db(“rockandmineraldb”);
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die('无法获取数据:'.mysql_error());
}
$ItemTypeOptionData=“”;
而($row=mysql\u fetch\u数组($retval,mysql\u ASSOC)){
$ItemTypeID=$row['ItemTypeID'];
$ItemType=$row['ItemType'];
$ItemTypeOptionData.=“$ItemType”;
}
$sql='选择ImageID,imagetable中的图像';
mysql_select_db(“rockandmineraldb”);
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die('无法获取数据:'.mysql_error());
}
$ImageOptionData=“”;
而($row=mysql\u fetch\u数组($retval,mysql\u ASSOC)){
$ImageID=$row['ImageID'];
$Image=$row['Image'];
$ImageOptionData.=“$Image”;
}
$sql='selectitemid,TrayBoxNo,ItemInBox,Name fromtable';
mysql_select_db(“rockandmineraldb”);
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die('无法获取数据:'.mysql_error());
}
$ItemOptionData=“”;
而($row=mysql\u fetch\u数组($retval,mysql\u ASSOC)){
$ItemID=$row['ItemID'];
$TrayBoxNo=$row['TrayBoxNo'];
$ItemInBox=$row['ItemInBox'];
$Name=$row['Name'];
$ItemOptionData.=“$TrayBoxNo、$ItemInBox、$Name”;
}
mysql_free_结果($retval);
echo“已成功获取数据\n”;
如果(isset($_POST['Item']){$ItemID==$_POST['Item'];}
if(isset($_POST['Location']){$LocationID=$_POST['Location'];}
if(isset($_POST['ItemType']){$ItemTypeID=$_POST['ItemType'];}
if(isset($_POST['Image']){$ImageID=$_POST['Image'];}
如果(isset($_POST['Donator']){$DonatorID=$_POST['Donator'];}
如果(isset)
$sql=“更新数据表\n”
“SET-LocationID=\'$LocationID\'、ItemTypeID=\'$ItemTypeID\'、ImageID=\'$ImageID\'、DonatorID=\'$DonatorID\'\n”
“其中ItemID=\'$ItemID\'”;
mysql_select_db(“rockandmineraldb”);
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die('无法更新数据:'.mysql_error());
}
echo“已成功更新数据\n”;
mysql_close($conn);
?>
在您的查询中,而不是
"UPDATE mineraltable\n"
. "SET LocationID=\'$LocationID\', ItemTypeID=\'$ItemTypeID\', ImageID=\'$ImageID\', DonatorID=\'$DonatorID\'\n"
. "WHERE ItemID=\'$ItemID\'"
使用
试试这个:
$sql = "UPDATE mineraltable"
. " SET LocationID='$LocationID', ItemTypeID='$ItemTypeID', ImageID='$ImageID', DonatorID='$DonatorID'"
. " WHERE ItemID='$ItemID'"
您使用了双引号,因此不应逃避单引号
$sql = "UPDATE mineraltable
SET LocationID='$LocationID', ItemTypeID='$ItemTypeID', ImageID='$ImageID',
DonatorID='$DonatorID' WHERE ItemID='ItemID' ";
请从查询中删除\n
和反斜杠
。这不是必需的。尝试从您输入$sql的查询中删除换行符。\n您不必在中转义'
$sql = "UPDATE mineraltable
SET LocationID='$LocationID', ItemTypeID='$ItemTypeID', ImageID='$ImageID',
DonatorID='$DonatorID' WHERE ItemID='ItemID' ";