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;