变量里面的href内部作为查询

时间:2018-04-06 20:14:07

标签: php mysql variables href

我正在尝试在我的代码中使用我的php运行我的SQL查询,但我无法让它运行。

这是我的疑问:

$sql = ee()->db->query("update exp_store_orders set shipping_company = '<a href='$png_code'>ciao</a>' where id = '$order->id'");

不要专注于第一部分,它是表达式。

问题是我试图在其中放置一个变量,但它不起作用。使用双引号会使我的代码生效并且单引号无法正常工作..

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你的问题

您需要大括号({...})或字符串连接如果您将以这种方式执行此操作。 (你绝对应该这样做,如下所述。)

示例:

$sql = ee()->db->query("update exp_store_orders set shipping_company = \"<a href='$png_code'>ciao</a>\" where id = '{$order->id}'");

// or

$sql = ee()->db->query("update exp_store_orders set shipping_company = \"<a href='$png_code'>ciao</a>\" where id = '" . $order->id . "'");

为什么这是错误的方法

但是 这不是正确的做法。您应该使用预准备语句,而不是将数据直接连接到查询中。按照您的方式进行操作会让您对SQL注入开放。从理论上讲,您可以完全控制$order->id,并且100%确定它是安全的。在实践中,你不是,你不是。

其他问题

此外,如果$order->id是一个数字,则不应将其用单引号括起来。但这并不重要,因为再次,你应该在那里使用占位符,而不是连接值。

还有一件事:请注意上面" s的转义,如\"中所示。您无法设置shipping_company = '<a href='$png_code'>ciao</a>'之类的值,因为数据库认为字符串在href=之后结束;当你以这种方式构建字符串时,它不知道如何处理'之外的任何事情。