Php mysql_num_行的PDO版本($result)==0)
可能重复:Php mysql_num_行的PDO版本($result)==0),php,mysql,pdo,Php,Mysql,Pdo,可能重复: ^我相信这不是同一个问题——其他作者的代码与我的不同,需要不同的答案。我成功地从这篇文章中得到了答案,并将其标记为已回答。现在一切正常(没有其他“复制”线程的帮助) 我想显示一条“找不到客户端”消息,如果找不到结果,是否有以下代码的PDO方法 $result = mysql_query($sql) or die(mysql_error()."<br />".$sql); if(mysql_num_rows($result)==0) { echo "No Cl
^我相信这不是同一个问题——其他作者的代码与我的不同,需要不同的答案。我成功地从这篇文章中得到了答案,并将其标记为已回答。现在一切正常(没有其他“复制”线程的帮助)
我想显示一条“找不到客户端”消息,如果找不到结果,是否有以下代码的PDO方法
$result = mysql_query($sql) or die(mysql_error()."<br />".$sql);
if(mysql_num_rows($result)==0) {
echo "No Client Found";
$result=mysql\u query($sql)或die(mysql\u error()。“
”。$sql);
if(mysql_num_rows($result)==0){
回显“未找到客户端”;
我尝试了以下方法
<?php
$db = new PDO('mysql:host=localhost;dbname=XXXXXXXXXXXX;charset=utf8','XXXXXXXXXXXX', 'XXXXXXXXXXXX');
$query = $db->query('SELECT * FROM client');
if ($query == FALSE) {
echo "No Clients Found";
}
else
{
foreach($query as $row)
{
<some code here>
}
}
?>
我错过什么了吗
我读过:但没有帮助
<?php
$db = new PDO('mysql:host=localhost;dbname=XXXXXXXXXXXX;charset=utf8','XXXXXXXXXXXX', 'XXXXXXXXXXXX');
$query = $db->query('SELECT * FROM client WHERE ID = 10');
if ($query->rowCount() != 1) {
echo "No Clients Found";
}
else
{
foreach($query as $row)
{
<some code here>
}
}
?>
有一个教程:
有一个教程:.
PDOStatement::rowCount()
不返回某些数据库中受SELECT语句影响的行数。下面的代码使用SELECT COUNT(*)
和fetchColumn()
。还要准备语句和尝试捕获异常
<?php
// Get parameters from URL
$id = $_GET["client"];
try {
$db = new PDO('mysql:host=localhost;dbname=XXXX;charset=utf8', 'XXXX', 'XXXX');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Prepare COUNT statement
$stmt1 = $db->prepare("SELECT COUNT(*) FROM client WHERE client = ?");
// Assign parameters
$stmt1->bindParam(1,$id);
$stmt1->execute();
// Check the number of rows that match the SELECT statement
if($stmt1->fetchColumn() == 0) {
echo "No Clients Found";
}else{
//echo "Clients Found";
// Prepare Real statement
$stmt2 = $db->prepare("SELECT * FROM client WHERE client = ?");
// Assign parameters
$stmt2->bindParam(1,$id);
$stmt2->setFetchMode(PDO::FETCH_ASSOC);
$stmt2->execute();
while($row = $stmt2->fetch()) {
//YOUR CODE HERE FROM
// Title
echo '<div id="portfolio_detail">';
//etc.etc TO
echo '<div><img src="'."/client/".$row[client].'_3.png"/></div>';
echo '</div>';
}//End while
}//End if else
}//End try
catch(PDOException $e) {
echo "I'm sorry I'm afraid you have an Error. ". $e->getMessage() ;// Remove or modify after testing
file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]').", myfile.php, ". $e->getMessage()."\r\n", FILE_APPEND);
}
//Close the connection
$db = null;
?>
PDOStatement::rowCount()
不返回某些数据库中受SELECT语句影响的行数。下面的代码使用SELECT COUNT(*)
和fetchColumn()
。还准备语句和try
捕获块来捕获异常
<?php
// Get parameters from URL
$id = $_GET["client"];
try {
$db = new PDO('mysql:host=localhost;dbname=XXXX;charset=utf8', 'XXXX', 'XXXX');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Prepare COUNT statement
$stmt1 = $db->prepare("SELECT COUNT(*) FROM client WHERE client = ?");
// Assign parameters
$stmt1->bindParam(1,$id);
$stmt1->execute();
// Check the number of rows that match the SELECT statement
if($stmt1->fetchColumn() == 0) {
echo "No Clients Found";
}else{
//echo "Clients Found";
// Prepare Real statement
$stmt2 = $db->prepare("SELECT * FROM client WHERE client = ?");
// Assign parameters
$stmt2->bindParam(1,$id);
$stmt2->setFetchMode(PDO::FETCH_ASSOC);
$stmt2->execute();
while($row = $stmt2->fetch()) {
//YOUR CODE HERE FROM
// Title
echo '<div id="portfolio_detail">';
//etc.etc TO
echo '<div><img src="'."/client/".$row[client].'_3.png"/></div>';
echo '</div>';
}//End while
}//End if else
}//End try
catch(PDOException $e) {
echo "I'm sorry I'm afraid you have an Error. ". $e->getMessage() ;// Remove or modify after testing
file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]').", myfile.php, ". $e->getMessage()."\r\n", FILE_APPEND);
}
//Close the connection
$db = null;
?>
使用此代码我得到:致命错误:调用未定义的方法PDO::rowCount()
:/@potts它应该是$query->rowCount()
,而不是$db->rowCount()
。仍然适用相同的警告,rowCount()
被证明对SELECT
不可靠,它可能在MySQL上工作,但如果以后更改RDBMS,可能会给您带来问题。可能不会很快更改。我还有一个问题。如何在where子句中输入数组?$query=$db->query('SELECT*FROM client where client=($id'))
像那样?@potts你可以看一看。我看了一看,但我不知所措!这是我迄今为止的代码:使用这段代码我得到:致命错误:调用未定义的方法PDO::rowCount()
:/@potts它应该是$query->rowCount()
,而不是$db->rowCount()
。同样的警告仍然适用,rowCount()
被证明对SELECT
不可靠,它可能在MySQL上工作,但如果以后更改RDBMS,可能会给您带来问题。可能不会很快更改。我还有一个问题。如何在where子句中输入数组?$query=$db->query('SELECT*FROM client where client=($id'))
像那样?@potts你可以看一看。我看了一看,但我不知所措!这是我迄今为止的代码:尝试准备语句//准备语句$stmt=$db->prepare(('SELECT*FROM client WHERE name=?AND other=?);//分配参数$stmt->bindParam(1,$name);$stmt->bindParam(2,$other);//执行查询$stmt->setFetchMode(PDO::FETCH_ASSOC);$stmt->execute();
代码末尾是否缺少一个}?my foreach有一个括号可以打开它-它将在哪里关闭?foreach($row查询){
我为foreach添加了右括号和右括号。奇怪-我准确地复制了你的代码并将我的代码放在里面-看着它应该可以工作,但我得到了一个空白页…我的代码在这里:Try prepared statement//prepare statement$stmt=$db->prepare('SELECT*FROM client WHERE name=?and other=?'));//分配参数$stmt->bindParam(1,$name);$stmt->bindParam(2,$other);//执行查询$stmt->setFetchMode(PDO::FETCH_ASSOC);$stmt->Execute();
代码末尾是否缺少一个}?我的foreach有一个括号可以打开它-它在哪里关闭?foreach($query as$row){
我为foreach添加了右括号和右括号。奇怪-我准确地复制了你的代码并将我的代码放在了里面-看着它应该可以工作,但我得到了一个空白页…我的代码在这里: