我有3个参数,可以将新的/更新的旧条目附加到自定义mysql表中。然而,我不明白为什么当我按下提交按钮。。。什么都没有发生(我也没有得到任何错误)。我不知如何是好。我以前问过这个问题,并根据其他教程修改了我的代码,认为这是我的问题。。。运气不好:(
我知道有人担心 mysql injections
-目前我只想看到它的工作,如果你有减轻注射我洗耳恭听的建议。我还是mysql的新手。。。但是学习要慢,要理解(至少)如何使用字符串变量来创建修改过的查询。
这是我的密码;
echo "<p><h5>Change address:</h5>";
//get user id when the login/visit page
$userid = get_current_user_id();
$loop = new WP_Query( $args );
//form start
echo '<form method = "post" action = "'. $_SERVER['PHP_SELF'] .'">';
//dropdown menu for collecting SKU of product
echo '<br><select name="sku">';
echo '<option>-- Select product--</option>';
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
echo '<option value=' . $product->get_sku() . '>' . $product->get_sku() . ' </option>';
endwhile;
echo '</select>';
//hidden input for userid
echo '<input type="hidden" id="userid" name="userid" value="' . $userid . '">';
//textbox for address
echo '<br><input type="text" value="Insert new address here" id="address" name="address" size="40" />';
//submit button
echo '<br><input type="submit" name="submit">';
echo '</form>';
//write to database
if(isset($_POST['submit'])) {
$user = $_POST['userid'];
$sku = $_POST['sku'];
$address = $_POST['address'];
$con2 = mysqli_connect("IP","user","password","wpdb");
$updateaddress = "REPLACE INTO wp_newaddress(user, sku, address) VALUES($user, $sku, $address)";
$retval = mysqli_query($con2,$updateaddress);
if($retval)
{
echo 'Data Updated';
}else{
echo 'Data Not Updated';
}
mysqli_close($con2);
}
谢谢:)
1条答案
按热度按时间yb3bgrhw1#
您需要使用带绑定参数的prepare和execute来避免sql注入风险。
您需要在每次准备和执行之后检查错误条件,并将所有错误输出到错误日志中。如果不这样做,就不会看到错误。
当然,您还应该查看php错误日志(通常与http服务器错误日志相同),但这是不言而喻的。每个php开发人员都应该关注错误日志(尽管许多开发人员不知道这一点)。
举个例子:
另外请阅读“如何防止php中的sql注入”中的答案?