自定义 php 从搜索字符串添加到购物车


Custom php Add to Cart from Search String

希望有人能帮忙。

我目前在我的网站上的各个产品页面中有一个"添加到购物车"选项,它将"pid"作为变量发送到购物车页面并且运行良好。 我的购物车页面上采用 pid 的代码如下:

if (isset($_POST['pid'])) {
$pid = $_POST['pid'];

但是,由于不想重写新代码,我只想更改获取$pid的方式,因为我知道它在代码的其余部分中都有效,我认为这将是答案:

if (isset($_POST['product_code'])) {
$prodAdd = $_POST['product_code'];
$pid = mysql_query("SELECT id FROM products WHERE product_name='$prodAdd' LIMIT 1'");

谁能看到任何明显的东西? 如果我强制将$pid分配为产品名称,它可以正常工作,我可以回显$prodAdd所以我只能假设这是我的查询有问题,我一生都无法弄清楚我试图改变我能想到的一切!

哦,如果有人可以提供帮助,我实际上更喜欢这个术语是 LIKE 而不是 =,但任何工作代码都足够了。

非常感谢,乔

好吧,我假设您的product_code没有存储在product_name列中:

$pid = mysql_query("SELECT id FROM products WHERE product_code='$prodAdd' LIMIT 1'");

我们假设您随后正确获取了该行。 ($pid只是一个结果资源...

请保护您的数据库免受SQL注入!您的代码在当前形式下非常容易受到攻击:

if (isset($_POST['product_code'])) {
  // At a minimum, escape $prodAdd with mysql_real_escape_string()
  // This is NOT OPTIONAL! YOU MUST DO THIS!
  $prodAdd = mysql_real_escape_string($_POST['product_code']);
  $pid = mysql_query("SELECT id FROM products WHERE product_code='$prodAdd' LIMIT 1'");
  if (!$pid) {
    // query error
    echo mysql_error();
  }
  else {
    // All results into $products (though you limited it to 1)
    $products = array();
    while ($row = mysql_fetch_assoc($pid)) {
      $products[] = $row;
    }
    // If you expect exactly one result, no need for a loop
    // $product = mysql_fetch_assoc($pid);
    // Get the value you need:
    var_dump($products);
  }
}

如果你想把它作为一个LIKE,只需连接%

$pid = mysql_query("SELECT id FROM products WHERE product_name LIKE '%$prodAdd%' LIMIT 1'");

mysql_query返回一个结果资源以供以后处理 购买其他 MySQL 函数,如 mysql_num_rows, mysql_fetch_array 等。 尝试将以下行添加到代码中:

$pid = mysql_fetch_assoc($pid);
$pid = $pid[0]['id'];

如果你的mysql_query语法正确,你应该得到你的pid。如果仍然不起作用,请尝试echo mysql_error();看看到底出了什么问题。

除了 sql 注入问题之外,您遇到的问题是查询在成功时不返回 id,而是返回资源。

您可能希望将其更改为类似(并添加错误处理...

$result = mysql_query("SELECT id FROM products WHERE product_name='$prodAdd' LIMIT 1'");
if ($row = mysql_fetch_assoc($result)) {
    $pid =  $row['id'];
}