我是 PHP 和 MySQL 的新手,我正在努力解决以下问题:
$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid .;
if(is_resource($sql) and mysql_num_rows($sql)>0){
当我尝试关闭我的 SQL 语句时会出现问题。我知道这与括号和分号有关,但是每次我更改一件事时,都会弄乱另一件事。有人可以帮我吗?
首先,删除第一行的最后一个点,因为最后没有连接任何字符串。应该是这样的:
$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid;
您是否正在对 SQL 服务器进行查询?如果不是,则该变量$sql
不执行任何操作,因此添加:
$result = mysql_query($sql);
并更改您的最后一行代码以处理查询结果
if(is_resource($result) && mysql_num_rows($result) > 0)
删除分号前的点。
以下是您需要做的事情:
mysql_query
代码:
$sql = "UPDATE Pharm_Log set text = '$bloodtest' WHERE patient = " . $patientid;
$result = mysql_query($sql);
if(is_resource($result ) and mysql_num_rows($result )>0) { ... }
作为旁注,SQL Injection
如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
是的,它是.
导致语法错误的最后一个。另外,您需要将非 int 值括在引号中,另外重要的是不要忘记添加 mysql_real_escape_string 否则会出现问题,您还应该使用 PDO 或 mysqli 与准备好的查询。
<?php
$sql = "UPDATE Pharm_Log
SET `text`='".mysql_real_escape_string($bloodtest)."'
WHERE patient = '".mysql_real_escape_string($patientid)."'";
?>
你最后不需要.
。改成,
$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid;