我有一小段用于更新SQL表的PHP代码。但是,它应该,因为它现在没有做任何事情,也没有产生任何错误:
$sql = "INSERT INTO `wordpress`.`thor_members` ($key) VALUES('$_POST[$key]') WHERE ID = '$_POST[ID]'";
var_dump($sql);
mysqli_real_escape_string($conn, $sql);
if(mysqli_error($conn)){
var_dump(mysqli_error($conn));
}
var_dump
实际打印的MySQL行如果我将它们运行到PHPMyAdmin中就可以正常工作。
答案 0 :(得分:0)
$sql = "UPDATE `wordpress`.`thor_members`
SET ".$key."='".$_POST[$key]."' WHERE ID = '".$_POST["ID"]."' ";
mysqli_query($sql);
试试这种方式
答案 1 :(得分:0)
$keyVal = mysqli_real_escape_string($conn, $_POST[$key]);
$id = intval(mysqli_real_escape_string($conn, $_POST['ID']));
// I'm assuming $_POST['ID'] is an int?
$sql = "UPDATE `wordpress`.`thor_members` SET $key = '$keyVal' WHERE ID = $id";
mysqli_query($conn, $sql);
if(mysqli_error($conn)){
var_dump(mysqli_error($conn));
}
这应该有用。
如果$ key来自一个未知来源,你也应该逃避它,但是你之前在自己的代码中设置了这个,这应该就足够了。
但是,你应该真正查找预备语句。
答案 2 :(得分:0)
主题的变体。
<?php
$sql = "INSERT INTO `wordpress`.`thor_members` ( `$key` ) VALUES ( '".mysqli_real_escape_string( $conn, $_POST[ $key ] )."' ) WHERE `ID` = '".mysqli_real_escape_string( $conn, $_POST['ID'])."'";
var_dump( $sql );
$result=mysqli_query( $conn, $sql );
if( $result ){
/* yeay - all good */
} else {
/* bogus */
if( mysqli_error( $conn ) ){
var_dump( mysqli_error( $conn ) );
}
}
?>