MYSQL和PHP意外错误

时间:2013-02-12 12:06:20

标签: php mysql

我是PHP和MySQL的新手,我正在努力解决以下问题:

$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid .;
    if(is_resource($sql) and mysql_num_rows($sql)>0){

当我尝试关闭我的SQL语句时出现问题。我知道这与括号和半冒号有关,但每当我改变一件事时,它就会混淆另一件事。有人可以帮帮我吗?

5 个答案:

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