【发布时间】:2018-06-10 17:00:25
【问题描述】:
我有一个三列的 MySQL 表;用户、产品、地址。我试图让我的表单向表中添加新的数据行或更新预先存在的行。我的更新条件是如果用户和产品都已经存在,只需更改地址。但如果既不存在(用户和产品),或者只是用户,则追加新的用户、产品和地址信息。
表单使用客户 ID、产品的下拉框和新地址的文本框,但是我的 SQL 更新命令似乎使页面失败,我找不到错误...这是我的尝试MySQL 代码:
已编辑测试代码 - 仍然无法正常工作
mysqli_select_db("wp_newaddress", $con);
if(isset($_POST['submit'])) {
$id = $_POST['$userid'];
$product = $_POST['sku'];
$address = $_POST['address'];
$sql = "UPDATE wp_newaddress SET address='address' WHERE user='$userid' AND product='sku'";
echo "<p><h5>Change address:</h5>";
$loop = new WP_Query( $args );
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>';
echo '<br><input type="text" value="Insert new address here" id="address" size="40" />';
echo '<br><button type="submit" name="submit">Change address</button>';
$retval = mysqli_query( $sql, $con );
if(! $retval )
{
die('Could not update data: ' . mysqli_error());
}
echo "Updated address successfully\n";
【问题讨论】:
-
您正在使用
mysql以及mysqli?请注意mysql已弃用,您应该使用mysqli或PDO -
@btx 我已经编辑了我的问题 - 仅使用 mysqli。我更改了我的代码,但仍然无法正常工作:(
-
将字符串值替换到查询中会使您的代码很容易受到 SQL 注入攻击。请阅读它们,然后使用参数化查询重写您的代码。
-
没错,这是非常危险的代码。例如。如果我输入为用户 ID:
5'; DELETE FROM wp_newaddress;,它将删除您的整个表。始终使用mysqli_stmt_bind_param绑定任何参数。如果您尝试使用面向对象的样式,您可能还会获得更多概览;-) -
@btx 谢谢你让我知道......在 MySQL 还是新手,我在努力学习!