如何通过传递php变量来更新MySQL中的char列?

时间:2014-10-21 00:45:13

标签: php mysql char

我目前正在开发一个简单的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"

所以我认为问题是将变量作为字符串传递。我尝试了几种不同的东西,但无法管理它......

3 个答案:

答案 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));