2012-05-16 3 views
4

Как вы пишете подготовленный оператор обновления? Справка: mysqli::prepareMySQLi подготовил инструкцию по обновлению в PHP

Я пробовал писать его, как описано:

if ($stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title =? description = ? WHERE uid = ?")){ 
      $stmt->bind_param('sss', $title, $desc, $uid2); 

      //Get params 
      $title=$_POST['title']; 
      $desc=$_POST['description']; 
      $uid2=$_GET['uid'];  

$stmt->execute(); 
      $stmt->close(); 
    } 
    else { 
     //Error 
     printf("Prep statment failed: %s\n", $mysqli->error); 
    } 

Ошибка:

Prep statment failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'description = ? WHERE uid = ?' at line 1 Edited row.

ответ

13

Вы просто не хватает запятой между заданными столбцами:

UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ? 
           ^^^^^^ 

Когда MySQL сообщает об ошибке, подобной , ознакомьтесь с руководством по использованию синтаксиса nea r 'something, посмотрите чаще всего на символ, непосредственно предшествующий ' что-то, так как именно там происходит ваша ошибка.

Примечание: вам может потребоваться позвонить bind_param() после установки входных переменных, а не ранее. Я не помню, как MySQLi анализирует их и когда они связаны, но логически имеет смысл в коде, чтобы сначала установить их, а затем привязать.

//Get params 
$title=$_POST['title']; 
$desc=$_POST['description']; 
$uid2=$_GET['uid']; 

$stmt->bind_param('sss', $title, $desc, $uid2); 
2

Вы, вероятно, нужно добавить запятые:

$stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ?" 
1

Вы связывающие параметры, прежде чем присваивать их переменные:

$title=$_POST['title']; 
$desc=$_POST['description']; 
$uid2=$_GET['uid']; 

$stmt->bind_param('sss', $title, $desc, $uid2); 

редактировать: Царапина, что это не кажется, имеют значение независимо от того, связаны ли параметры до или после того, как вы определили переменные (вы узнаете что-то новое каждый день!), но, как и Майкл Сай d, логически имеет смысл определить их в первую очередь.

+0

Да, это определенно имеет смысл иметь их в первую очередь! –

Смежные вопросы