我目前正在开发一个简单的php / mysql网站作为作业。
我需要通过传递php变量来更新表中的char列。问题是我不知道如何将变量作为字符串传递。
$verify = $_POST['verification'];
"UPDATE Users SET account_status=1 WHERE verification_code= . $verify . ";
以上查询对我不起作用。在mysql上手动运行查询确实有效;
UPDATE Users SET account_status=1 WHERE verification_code="XYz12"
所以我认为问题是将变量作为字符串传递。我尝试了几种不同的东西,但无法管理它......
答案 0 :(得分:2)
字段verification_code是一个字符串,这必须介于简单的引用之间:
$query = "UPDATE Users SET account_status=1 WHERE verification_code='$verify'";
答案 1 :(得分:1)
查询的正确字符串如下:
$query = "UPDATE Users SET account_status=1 WHERE verification_code=\"" . $verify . "\"";
使用\ char,你可以看到引号char。无论如何,这可能会令人困惑,因此您可以使用简单的引号。
$query = "UPDATE Users SET account_status=1 WHERE verification_code='$verify'";
请注意,您可以在上面的引号中引用php变量。
<强>顺便说一句。您的错误是您正在使用字符串中的串联字符。它应该像我的第一个例子一样使用。无论如何,如果它是一个字符串,你需要引用SQL的值。如果字段不是字符串,则不必执行此操作。
如果您担心SQL-Injection,可以使用Prepared Statements而不是普通查询。我向你推荐PDO Class of PHP。您也可以尝试MySQLi。
答案 2 :(得分:1)
"UPDATE Users SET account_status=1 WHERE verification_code='" . $verify . "'";
但当然这种形式很糟糕。您需要确保已正确转义变量。我建议使用PDO预处理语句:
$stmt = $db->prepare("UPDATE Users SET account_status=1 WHERE verification_code=?");
$stmt->execute(array($verify));