我有以下插入语句,它工作正常,如果PName没有(')值,但是当文本包含('),查询将返回语法错误。任何想法如何解决这个问题?非常感谢。字符串值在插入语句中包含(')。
$queryinsert = "INSERT INTO CART (CartPID, CartPName, CartPrice,CartCustID, CartDate) values ($pid, '$PName', $PPrice, $CustID, (NOW()))";
我有以下插入语句,它工作正常,如果PName没有(')值,但是当文本包含('),查询将返回语法错误。任何想法如何解决这个问题?非常感谢。字符串值在插入语句中包含(')。
$queryinsert = "INSERT INTO CART (CartPID, CartPName, CartPrice,CartCustID, CartDate) values ($pid, '$PName', $PPrice, $CustID, (NOW()))";
您需要在将输入保存到数据库中之前将其转义。例如,用mysql_real_escape_string。
$PName = mysql_real_escape_string($PName);
$queryinsert = "INSERT INTO CART (CartPID, CartPName, CartPrice,CartCustID, CartDate) values ($pid, '$PName', $PPrice, $CustID, (NOW()))";
这种情况可能会导致SQL注入,你应该check this topic。首先要做的就是转向准备好的语句,这将为您节省一些SQL注入预防的麻烦。
这就是你最担心的问题,为什么你应该逃避,或者移动到参数化查询有一堆重要的原因 –
谢谢你的回答。它解决了。非常感谢。 – user2649074
你应该阅读SQL注入。 – delnan
我试图回复“$ PName”为“$ PName”,但无法正常工作。 – user2649074
您的代码易受[SQL Injection](http://en.m.wikipedia.org/wiki/SQL_injection)攻击的影响。 – akashivskyy