PHP更新准备好的语句问题

PHP更新准备好的语句问题,php,html,sql,Php,Html,Sql,以下是更新代码,供任何希望更新其数据库的人使用。谢谢大家的帮助 <?php try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // prepare s

以下是更新代码,供任何希望更新其数据库的人使用。谢谢大家的帮助

<?php
  try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
 $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prepare sql and bind parameters
$stmt = $conn->prepare("UPDATE test SET title=:title WHERE id=:id");
$stmt->bindParam(':title', $title);  
$stmt->bindParam(':id', $id);

// Update a row
$title = $_POST['title'];
$id = $_POST['id'];
$stmt->execute();
echo "Row updated"; 
echo "<br />";
echo "<strong>$title</strong> and <strong>$id</strong>";
 }
 catch(PDOException $e) {
echo "Error: " . $e->getMessage();
 }
$conn = null;
?>

使用bind_param():


使用bind_param():


使用这个。希望它能帮助你。
使用这个。希望它能帮助你。

尽管现在只在调用
bindParam
时,您仍然有一点PDO和MySQLi的混合,您调用它就像调用
MySQLi::bind_param
一样。另外,在上次编辑时,由于添加了
Values=?
我不知道您为什么这样做,查询字符串被弄乱了?无论如何,这应该满足您的要求:

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("UPDATE test SET title=:title WHERE id=:id");
    $stmt->bindParam(':title', $title);  
    $stmt->bindParam(':id', $id);

    // Update a row
    $title = $_POST['title'];
    $stmt->execute();
    echo "Row updated";
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

尽管现在只在调用
bindParam
时使用了PDO和MySQLi,但您仍然有一点混合,您调用它就像调用
MySQLi::bind_param
一样。另外,在上次编辑时,由于添加了
Values=?
我不知道您为什么这样做,查询字符串被弄乱了?无论如何,这应该满足您的要求:

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("UPDATE test SET title=:title WHERE id=:id");
    $stmt->bindParam(':title', $title);  
    $stmt->bindParam(':id', $id);

    // Update a row
    $title = $_POST['title'];
    $stmt->execute();
    echo "Row updated";
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;


您使用的是
mysqli
还是
PDO
?因为您正在与
mysqli
建立连接,但您正在使用
PDO
语句。看起来您将一些
PDO
代码粘贴到了一些
mysqli
代码的中间。看起来您正在将PDO和mysqli混合在一起。您正在使用参数,例如使用Mysqli连接的PDO。我正在使用Mysqli。我没有粘贴它。我使用的是一本php mysql参考书。所以我需要更新我的连接部分?我已经更新了我的连接,但仍然没有运气。-
try{$conn=newpdo(“mysql:host=$servername;dbname=$dbname”、$username$password);//将PDO错误模式设置为异常$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_exception)
您是在使用
mysqli
还是
PDO
?因为您正在与
mysqli
建立连接,但您使用的是
PDO
语句。看起来您将一些
PDO
代码粘贴到了一些
mysqli
代码的中间。看起来您正在将PDO和mysqli混合在一起。您正在使用参数like PDO使用Mysqli连接。我使用的是Mysqli。我没有粘贴它。我使用的是php mysql参考书。所以我需要更新我的连接部分?我已经更新了我的连接,但仍然不走运。-
尝试{$conn=new PDO(“mysql:host=$servername;dbname=$dbname”,$username,$password);//将PDO错误模式设置为异常$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_exception);
谢谢您的帮助。因此,通过您的代码,我收到以下错误--“致命错误:在/test/myupdate.php第16行调用未定义的方法mysqli::prepared()”--这是第16行的内容--$statement=$conn->prepared(“UPDATE test SET title=?WHERE id=?”;@Reed将“prepared”更改为“prepare”,我已根据反馈将问题中的上述代码更新为现在的代码。我只得到一个空白页。感谢您的帮助。感谢您的帮助。因此,对于您的代码,我收到以下错误--“致命错误:调用未定义的方法mysqli::prepared()在第16行的/test/myupdate.php中”--这是第16行的内容-$statement=$conn->prepared(“更新测试集标题=?其中id=?”);@Reed change“prepared”to“prepare”我已根据反馈将我问题中的上述代码更新为现在的代码。我只是得到一个空白页。谢谢你的帮助。你能解释你的代码以便其他人可以从中学习吗?你能解释你的代码以便其他人可以从中学习吗?它仍然没有更新数据库,但至少是这样我再也没有收到错误消息了。感谢您的帮助,我真的很感激。您好@Reed,如果您的问题没有得到解决,您不应该标记为已接受。问题可能出在
$id
的值上。您是否尝试过仅使用原始值运行查询(例如
更新测试集title='x',其中id=1
)在phpMyAdmin或MySQL workbench之类的东西中?不,我找到了答案。我们缺少的只是
$id=$\u POST['id']
在“更新一行”下。一旦我把它放在那里,它就更新了数据库。你的代码让我达到了这一点,所以谢谢你。很高兴听到你的声音。很高兴我能帮上忙。嗨,问题是你知道我为什么会在回显之前得到
–
吗?我做了一些尝试,什么都没有。很抱歉再次打扰你。谢谢你的帮助。它仍然没有更新g数据库,但至少我不再收到错误消息。感谢您的帮助,我真的很感激。您好@Reed,如果您的问题没有解决,您不应该将其标记为已接受。问题可能与
$id
的值有关?您尝试过仅使用原始值运行查询吗(例如,
更新测试集title='x',其中id=1
)在phpMyAdmin或MySQL workbench中?不,我找到了。我们缺少的只是
$id=$\u POST['id']
在“更新一行”下。一旦我把它放在那里,它就更新了数据库。你的代码让我达到了这一点,所以谢谢你。很高兴听到你的声音。很高兴我能帮上忙。嗨,问题是你知道我为什么会在回显之前收到
–
吗?我做了一些尝试,什么都没有。很抱歉再次打扰你。谢谢你的帮助。
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("UPDATE test SET title=:title WHERE id=:id");
    $stmt->bindParam(':title', $title);  
    $stmt->bindParam(':id', $id);

    // Update a row
    $title = $_POST['title'];
    $stmt->execute();
    echo "Row updated";
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;