2013-02-12 3 views
0

Я новичок в PHP и MySQL, и я борюсь с приводимым ниже:MYSQL и PHP Неожиданные ошибки

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

Проблема возникает, когда я пытаюсь закрыть мой SQL заявление. Я знаю, что это связано с скобками и полуколонами, но каждый раз, когда я меняю одну вещь, это испортит другой. Может кто-нибудь, пожалуйста, помогите мне?

+1

Я думаю, что это последняя точка просто перед полутолком, попробуйте удалить это – bhttoan

+1

Кроме того, '$ sql' - это строка, а не ресурс. Сначала нужно выполнить запрос, чтобы получить ресурс. И 'mysql_num_rows()' не подходит для запросов UPDATE. – Arjan

+0

Все функции 'mysql_ *' устарели. Вместо этого используйте 'mysqli' или' PDO'. – Arjan

ответ

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) { ... } 

В качестве побочного сигнала запрос уязвим с SQL Injection, если значение (s) переменных было получено извне. Пожалуйста, ознакомьтесь с приведенной ниже статьей, чтобы узнать, как ее предотвратить. Используя PreparedStatements, вы можете избавиться от использования одинарных кавычек вокруг значений.

1

Удалить точку перед точкой с запятой.

0

Вам не нужно . в конце. Измените его в,

$sql = "UPDATE Pharm_Log set text = ". $bloodtest . " WHERE patient = " . $patientid; 
+0

Ребята благодарим за помощь! – user2064630

1

Да сво последние . Thats вызывая ошибку синтаксиса. Кроме того, вам нужно окружать значения non 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)."'"; 
?> 
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)