现在一直在寻找答案,但似乎无法找到任何答案。
我正在寻找一种方法来使用mysqli_bind_param将一行插入表中,其中param(?)是更大字符串的一部分。 这是我的代码:
$text = "Price edited from $product_editPrice_was to $product_editPrice_now"
我正在寻找一种方法来添加" $ product_editPrice_was"和" $ product_editPrice_now"进入行。
我可以创建一个字符串:
$query = "INSERT INTO CDBusers_activity (order_ID, activity_text_desc) VALUES (?, 'Price edited from ' ? ' to ' ?)";
然后绑定,但我感兴趣,如果有一个更简单的方法?例如:
[]parentclass
提前致谢。
答案 0 :(得分:1)
提出您的主要问题 - 不,您不能用占位符替换部分插入值。
解决方案是:
$query = "INSERT INTO CDBusers_activity (order_ID, activity_text_desc) VALUES (?, ?)";
$stmt = mysqli_prepare($DB_conn, $query);
$text = "Price edited from $product_editPrice_was to $product_editPrice_now";
mysqli_bind_param($stmt, "ss", $orderID, $text);
mysqli_stmt_execute($stmt);
另一种解决方案是创建price_before
,price_after
等不同字段。
但是如果你不能这样做,你可以尝试使用mysql CONCAT()
和占位符,但我不确定它是否有效:
INSERT INTO CDBusers_activity (order_ID, activity_text_desc) VALUES (?, CONCAT('Price edited from ', ?, ' to ', ?)
答案 1 :(得分:1)
但如果有更简单的方法,我感兴趣吗?
这是一个有趣的问题。在某种程度上。
$text = "Price edited from $product_editPrice_was to $product_editPrice_now";
显然是创建文本字符串的最简单方法。虽然这个文本字符串可以通过占位符的常规方式绑定到查询。此外,您将SQL和数据相互分离,这将有助于您更好地组织代码。
所以我认为有些事情你不应该变得更简单。因为这样的尝试可能会使事情变得更加复杂。