我是PHP和MySQL的新手,我正在努力解决以下问题:
$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid .;
if(is_resource($sql) and mysql_num_rows($sql)>0){
当我尝试关闭我的SQL语句时出现问题。我知道这与括号和半冒号有关,但每当我改变一件事时,它就会混淆另一件事。有人可以帮帮我吗?
答案 0 :(得分:1)
以下是您需要做的事情:
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) { ... }
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:1)
删除分号前的点。
答案 2 :(得分:1)
是的,它导致语法错误的最后.
。另外,你需要在引号中包含非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)."'";
?>
答案 3 :(得分:1)
Firsdt,删除第一行的最后一个点,因为你没有在末尾连接任何字符串。应该是这样的:
$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)
答案 4 :(得分:0)
最后你不需要.
。将其改为,
$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid;