自定义php从搜索字符串添加到购物车
希望有人能帮上忙 我目前有一个“添加到购物车”选项,从我的网站上的各个产品页面,它发送“pid”作为一个变量到购物车页面,并完美地工作。我的购物车页面上采用pid的代码位如下:自定义php从搜索字符串添加到购物车,php,mysql,Php,Mysql,希望有人能帮上忙 我目前有一个“添加到购物车”选项,从我的网站上的各个产品页面,它发送“pid”作为一个变量到购物车页面,并完美地工作。我的购物车页面上采用pid的代码位如下: if (isset($_POST['pid'])) { $pid = $_POST['pid']; 然而,为了不想重新编写新代码,我只想改变$pid的获取方式,因为我知道它在代码的其余部分都起作用,我想这就是答案: if (isset($_POST['product_code'])) { $prodAdd = $_PO
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而不是=,但是任何工作代码都可以
非常感谢,Joe好吧,我假设您的
产品\u代码
未存储在产品\u名称
列中:
$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);
}
}
如果您想将其作为类似于的,只需在%
上串联即可:
$pid = mysql_query("SELECT id FROM products WHERE product_name LIKE '%$prodAdd%' LIMIT 1'");
mysql\u query返回一个要稍后处理的结果资源购买其他mysql函数,如mysql\u num\u rows、mysql\u fetch\u array
等。尝试将以下行添加到代码中:
$pid = mysql_fetch_assoc($pid);
$pid = $pid[0]['id'];
如果您的mysql_查询语法正确,您应该获得pid。如果仍然不起作用,请尝试echo mysql_error()
查看到底出了什么问题。除了sql注入问题之外,您遇到的问题是,查询成功时不会返回id,而是返回一个资源
您可能希望将其更改为(并添加错误处理…):
美好的享受你的数据库垃圾。@MarcB有时我只想退出PHP,走开。只要互联网从不丢弃垃圾教程,这是一场失败的战斗。只要在毫无意义/无用的页面上销售广告赚钱,网络上就会有垃圾。那么,有没有指向任何有用而非垃圾资源的指针?@user1266648好的PHP教程很少。php.net上的函数文档始终是开始的地方。对于核心PHP功能,官方文档几乎总是有很好的示例来演示良好的实践。不过,请注意下面评论中用户提供的示例。谢谢,我对php的理解显然比我想象的要少得多。这是一个封闭的网站,通过htaccess进行密码转换,然后通过“用户”数据库进行密码转换,因此,如果有人可怜到攻击它,我至少会知道它是谁谢谢你,可能是我实现了错误,但我从mysql获得了无效的资源错误。\u fetch\u assoctock感谢你的响应和解释。它似乎与mysql_fetch_数组配合使用,但显然我的全部代码都毫无价值
$result = mysql_query("SELECT id FROM products WHERE product_name='$prodAdd' LIMIT 1'");
if ($row = mysql_fetch_assoc($result)) {
$pid = $row['id'];
}