我是一个老派的MySQL用户,并且总是优先JOIN
于子查询.但是现在每个人都使用子查询,我讨厌它; 我不知道为什么.
如果存在任何差异,我缺乏理论知识来判断自己.子查询是否与a一样好JOIN
,因此没有什么可担心的?
可能重复:
为什么同时检查isset()和!empty()
你能帮助我改进我的编码风格吗?:)在我需要检查的一些任务中 - 变量为空或包含某些东西.为了解决这个任务,我通常会做以下几点.
检查 - 是否设置此变量?如果它已经设置 - 我检查 - 它是空的还是没有?
<?php
$var = '23';
if (isset($var)&&!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
Run Code Online (Sandbox Code Playgroud)
我有一个问题 - 我应该在empty()之前使用isset() - 是否有必要?TIA!
我想将表的架构以及该表中的数据复制到实时服务器上另一个数据库中的另一个数据库表.我怎么能这样做?
在我的本地/开发环境中,MySQLi查询执行正常.但是,当我在我的Web主机环境中上传它时,我收到此错误:
致命错误:在...中的非对象上调用成员函数bind_param()
这是代码:
global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Run Code Online (Sandbox Code Playgroud)
为了检查我的查询,我试图通过控制面板phpMyAdmin执行查询,结果是OK.
我有2个数据库字段
`decval` decimal(5,2)
`intval` int(3)
Run Code Online (Sandbox Code Playgroud)
我有2个pdo查询更新它们.更新int的那个工作正常
$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)
但我无法更新小数字段.我尝试了以下3种方法,但没有任何效果
$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);
Run Code Online (Sandbox Code Playgroud)
看来问题出在数据库类型上decimal
?是否存在PDO::PARAM
类型的字段decimal
?如果没有,我将使用什么作为解决方法?
在调用重定向函数头之后,我应该调用exit吗?
<?php // fileA
$urlFailToGoTo = '/formerror.php';
if (sth)
{
header(sprintf("Location: %s", $urlFailToGoTo));
exit(); //should I call exit() here? or return?
}
?>
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用PDO执行一个带有IN
子句的语句,该子句使用数组作为它的值:
$in_array = array(1, 2, 3);
$in_values = implode(',', $in_array);
$my_result = $wbdb->prepare("SELECT * FROM my_table WHERE my_value IN (".$in_values.")");
$my_result->execute();
$my_results = $my_result->fetchAll();
Run Code Online (Sandbox Code Playgroud)
上面的代码完全正常,但我的问题是为什么这不是:
$in_array = array(1, 2, 3);
$in_values = implode(',', $in_array);
$my_result = $wbdb->prepare("SELECT * FROM my_table WHERE my_value IN (:in_values)");
$my_result->execute(array(':in_values' => $in_values));
$my_results = $my_result->fetchAll();
Run Code Online (Sandbox Code Playgroud)
此代码将返回my_value
等于$in_array
(1)中第一项的项,但不返回数组中的其余项(2和3).
我似乎无法从PDO收到任何错误消息:
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
它只给出:
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
Run Code Online (Sandbox Code Playgroud)
setAttribute没有任何帮助.
这是PHP 5.3.3
支持MySQL的Apache 2.0 Handler PDO驱动程序
客户端API版本mysqlnd 5.0.7-dev - 091210 - $ Revision:300533 $
我该怎么做才能获得错误信息?
我从Apache收到以下错误
[Sat Mar 19 23:10:50 2011] [warn] mod_fcgid:stderr:PHP致命错误:require_once()[function.require]:无法打开所需的'/common/configs/config_templates.inc.php'(include_path =' .:/ usr/share/pear:/ usr/share/php')在第158行的/home/viapics1/public_html/common/configs/config.inc.php
我肯定不是Apache的专家,但文件config.inc.php和config_templates.inc.php在那里.我也尝试导航到我放在common/configs /中的test.html页面,所以我假设没有任何权利问题.我还设置了config_templates.inc.php的权限,以赋予每个人读,写和执行权限.不知道该做什么,我查看是否有/ usr/share/php目录,我发现没有,但是当我做了yum install php时,它说它有最新版本.想法?
这是有关PHP数据对象的常见问题列表
由于PDO具有常规PHP用户未知的某些功能,因此有关PDO中的预准备语句和错误处理的问题非常频繁.所以,这只是一个可以找到它们的地方.
如果您的问题已与此列表密切相关,请在下面找到您的问题并将修复程序应用于您的代码.对其他问题进行简要介绍也是一个好主意,让自己为其他常见陷阱做好准备.
也可以看看